Go to file
semantic-release-bot f9572e4125 chore(release): 1.0.0 [skip ci]
# 1.0.0 (2022-10-20)

### Bug Fixes

* **a11y:** replace active tab color to contrast with background on podcast and episode pages ([f3785e1](f3785e1401))
* **activity-pub:** cache issues when navigating to activity stream urls ([7bcbfb3](7bcbfb32f7))
* **activity-pub:** get database records using new model instances ([92536dd](92536ddb38))
* **activitypub:** add conditions for possibly missing actor properties + add user-agent to requests ([8fbf948](8fbf948fbb))
* **activitypub:** add target actor id to like / announce activities to send directly to note's actor ([962dd30](962dd305f5))
* **activitypub:** add target_actor_id for create activity to broadcast post reply ([0128a21](0128a21ec5))
* **activitypub:** allow cors on get requests for routes exposing acitivitypub objects ([2f24809](2f2480998f))
* **activitypub:** set created_by to null for reblog if no user + update episode oembed data ([209dfbd](209dfbd134))
* add admin-audio-player to vite config to have admin player show up ([93cb9b2](93cb9b2470))
* add application/octet-stream mimetype to mp3 and m4a extensions to prevent ext_in error ([339bef8](339bef878e)), closes [#145](https://code.castopod.org/adaures/castopod/issues/145)
* add category_label component to include parent category in about podcast page ([74e7d68](74e7d68ac8))
* add explicit int conversion when formatting episode duration ([1253096](1253096197))
* add head request to analytics_hit route ([f0a2f0b](f0a2f0bea4))
* add href to castopod website on login page ([cc54257](cc54257351))
* add missing explicit badge for podcasts and episodes ([cdf9f9d](cdf9f9d53f))
* add open graph size for podcast images to replace the inadequate large format ([33aae1f](33aae1f793))
* add public/media folder to castopod bundle ([8053d35](8053d3521b)), closes [#52](https://code.castopod.org/adaures/castopod/issues/52)
* add translation key for audio-clipper trim labels ([db191ac](db191ac31b))
* add underline and semibold font weight for prose links to have them stand out ([d4d8671](d4d867121c))
* add where condition to get episode count without deleted episodes ([7661734](7661734ed2)), closes [#67](https://code.castopod.org/adaures/castopod/issues/67)
* **admin:** save block and lock switches ([b66c0af](b66c0afc8f))
* **analytics:** redirect to mp3 file even when referer was not set ([9fc388d](9fc388d154))
* **analytics:** remove charts empty values + remove useless language cache ([1678794](1678794153))
* **analytics:** set duration field to precise decimal as episode's audio file duration ([d772685](d772685405))
* **analytics:** set initial value for duration and bandwidth ([ee50539](ee50539591))
* **analytics:** update migrations to set decimal precision for latitude and longitude ([714d6b5](714d6b5d49))
* **analytics:** update service management so that it works with new OPAWG slug values ([7fe9d42](7fe9d42500))
* **audio-clipper:** add mouse position offset when stretching clip to prevent content from jumping ([602654b](602654b99b))
* **audio-clipper:** show audio playing progress + put waveform behind audio clipper ([01a09dc](01a09dc447))
* **avatar:** use default avatar when no avatar url has been set ([9d23c7e](9d23c7e7e1)), closes [#111](https://code.castopod.org/adaures/castopod/issues/111)
* **bundle:** include modules and themes when copying files with rsync ([cd5bb88](cd5bb8835c))
* **bundle:** update vite input files path + add `set -e` in bash scripts to fail if command fails ([0ee53c7](0ee53c71ff))
* **cache:** add locale for podcast and episode pages + clear some persisting cache in models ([9cec8a8](9cec8a81cc)), closes [#42](https://code.castopod.org/adaures/castopod/issues/42) [#61](https://code.castopod.org/adaures/castopod/issues/61)
* **cache:** delete posts and comments pages cache when updating platform links ([f7c3e5b](f7c3e5bf4a)), closes [#169](https://code.castopod.org/adaures/castopod/issues/169)
* **cache:** return a non cached view when connected ([e2e7358](e2e735815d))
* **cache:** suffix cache names with authenticated for credits, map and pages ([418a70b](418a70b2a6))
* cast actor_id to pass as int to set_interact_as_actor() function ([56a8e5d](56a8e5d7dd))
* **category:** remove uncategorized option to enforce users in choosing a category ([8c64f25](8c64f25a0e))
* change image size requirement hints ([ea20206](ea20206ee6))
* change message upon cancellation of episode publication ([9859c74](9859c7434c))
* check for database connection and podcasts table existence before redirecting to install ([eb74e81](eb74e81c3d))
* check that additional files are valid when creating episode ([eac5bc8](eac5bc876d))
* check that note has a preview_card_id before displaying it ([acb8b3a](acb8b3a401)), closes [#114](https://code.castopod.org/adaures/castopod/issues/114)
* clear cache when deleting podcast banner ([99bb40b](99bb40b8bc))
* comment all cache clean after page update to prevent analytics cache deletion ([e6197a4](e6197a4972))
* **comments:** add comment view partials for public pages ([fcecbe1](fcecbe1c68))
* correct chart data ([4d3e9c8](4d3e9c8c02))
* correct percona compatibility issue ([e53f819](e53f819264))
* correct php-fpm issues ([1ef55d7](1ef55d7315))
* correct referrer bug ([ed69b2f](ed69b2f500))
* correction for servers with low int precision ([31b7828](31b7828e77))
* **cors:** add preflight option routes for episode, podcast and status objects ([a281abf](a281abfda4))
* declare typed properties in PHPDoc for php<7.4 ([14dd44d](14dd44d03d)), closes [#23](https://code.castopod.org/adaures/castopod/issues/23)
* define podcast_id and platform_slug as foreign keys in podcasts_plaforms table ([6e9451a](6e9451a110))
* define podcastNamespaceLink value ([0d744d2](0d744d212d))
* **email:** set the correct url in the activation and forgot emails ([10fc6f1](10fc6f17c6)), closes [#204](https://code.castopod.org/adaures/castopod/issues/204)
* **embeddable-player:** enable any ancestor when X-Frame-Options is set on server ([44a4962](44a4962e0b))
* **embed:** open embedded player's links in new tab ([4aa73d7](4aa73d71e3))
* **episode-form:** show warning to set `memory_limit`, `upload_max_filesize` & `post_max_size` ([3b3c218](3b3c218b9c)), closes [#5](https://code.castopod.org/adaures/castopod/issues/5) [#86](https://code.castopod.org/adaures/castopod/issues/86)
* **episode-unpublish:** set consistent posts_counts' increments/decrements for actors and episodes ([8acdafd](8acdafd260)), closes [#233](https://code.castopod.org/adaures/castopod/issues/233)
* **episodeCount:** add missing brackets to French language file ([c1b4112](c1b411265a))
* **episode:** replace guid's empty string value to null ([441052a](441052af8d))
* **episodes-page:** handle defaultQuery being null when no podcast episodes ([15183b7](15183b7eab)), closes [#100](https://code.castopod.org/adaures/castopod/issues/100)
* **episodes-table:** set descriptions to be not null ([6774ec1](6774ec10fa))
* **episodes:** add publication status + set publication date to null when none has been set ([d882981](d882981b3a)), closes [#70](https://code.castopod.org/adaures/castopod/issues/70)
* escape characters for `min` in format_duration_symbol ([3b6722a](3b6722a42b))
* escape generated feed tag values and remove new lines from public pages meta description ([6238a43](6238a43863)), closes [#57](https://code.castopod.org/adaures/castopod/issues/57) [#46](https://code.castopod.org/adaures/castopod/issues/46)
* expire default query cache upon scheduled episode publication ([b72e7c8](b72e7c8691)), closes [#81](https://code.castopod.org/adaures/castopod/issues/81)
* explicitly cast seconds to int in iso8601_duration helper function ([779653f](779653f75b))
* **fediverse:** set default castopod avatar url when actor avatar is not present ([460f52f](460f52f70e))
* **fediverse:** set model instances as non shared to prevent overlapping ([91128fa](91128fad7a))
* fix layout bugs in admin and update translation files ([a834171](a83417180c)), closes [#40](https://code.castopod.org/adaures/castopod/issues/40)
* **follow:** add missing helpers to Actor controller ([ee53a73](ee53a732dc))
* **get_browser_language:** return defaultLocale if browser doesn't send user preferred language ([9cc2996](9cc2996261))
* handle HEAD requests on podcast_feed route ([74b2640](74b2640f2a)), closes [#79](https://code.castopod.org/adaures/castopod/issues/79)
* **home:** remove hardcoded prefix in getAllPodcasts query ([92d5cc5](92d5cc50a3))
* **housekeeping:** replace the use of GLOB_BRACE with looping over file extensions ([42d92d0](42d92d0c8d)), closes [#154](https://code.castopod.org/adaures/castopod/issues/154)
* **housekeeping:** set default sizes value + ignore illegal IFD size error to proceed with script ([f21ca57](f21ca57603))
* **housekeeping:** use EpisodeModel's builder to reset comments count ([65e9c0b](65e9c0b05e))
* **htaccess:** add ? after index.php in RewriteRule ([d9d139e](d9d139eefa)), closes [#152](https://code.castopod.org/adaures/castopod/issues/152)
* **http-signature:** update SIGNATURE_PATTERN allowing signature keys to be sent in any order ([b7f285e](b7f285e4e2))
* **images:** set default mimetype if none is specified when getting size info ([6e4acc6](6e4acc64ad))
* **import-with-escaped-characters:** remove \CodeIgniter\HTTP\URI in download_file, closes [#103](https://code.castopod.org/adaures/castopod/issues/103) ([35b5be0](35b5be095f))
* **import:** add extension when downloading file without + truncate slug if too long ([c5f18bb](c5f18bb6dc))
* **import:** add validation for handle field to prevent Router.invalidParameterType error ([5bf7200](5bf7200fb3)), closes [#119](https://code.castopod.org/adaures/castopod/issues/119)
* **import:** cast description's SimpleXMLElement to string ([02d17be](02d17be4ff))
* **import:** remove query string from files url ([109c4aa](109c4aa1af))
* **import:** save media files during podcast import + set missing media fields ([a9989d8](a9989d841a))
* **import:** set default episode type if not set ([d7250ab](d7250ab03f))
* **import:** set episode and season numbers to null when not present in item tag ([3211398](3211398c78))
* **import:** use <image><url> tag when no <itunes:image> is present ([20e607a](20e607afb7))
* include missing variables on public ui's episode page and remote_actions ([193b373](193b373bc9))
* **input-component:** unset required attribute to prevent rendering it when false ([db9ac13](db9ac13860))
* **install:** add password validation when creating super admin ([5a2ca0c](5a2ca0cc4a))
* **install:** redirect manually to install wizard on first visit ([2ceaaca](2ceaaca44f))
* **install:** redirect to host_url install route on instanceConfig validation error ([99250b1](99250b1868))
* **install:** redirect to input baseUrl after instance config ([2426af7](2426af7de8)), closes [#53](https://code.castopod.org/adaures/castopod/issues/53)
* **install:** set message block on forms to show error messages ([3a0a20d](3a0a20d59c)), closes [#157](https://code.castopod.org/adaures/castopod/issues/157)
* **interact-as:** set actor_id instead of podcast id upon login event ([5dfade7](5dfade7cf3)), closes [#104](https://code.castopod.org/adaures/castopod/issues/104)
* **json-ld:** add missing properties to PodcastSeries object ([e97266c](e97266c5d4))
* keep subtitle line breaks when parsing srt file to json ([cfb3da6](cfb3da6592))
* **layouts:** replace holy-grail layout with tailwind config + widen public podcast layout ([be5a287](be5a28787f))
* **map:** update episode markers query to discard unpublished episodes ([b3caac4](b3caac45b1))
* **markdown-editor:** remove unnecessary buttons for podcast and episode editors + add extensions ([9c4f60e](9c4f60e00b))
* **md-editor:** build new markdown editor with lit + github/markdown-toolbar-element ([9ec1cb9](9ec1cb93da)), closes [#93](https://code.castopod.org/adaures/castopod/issues/93) [#94](https://code.castopod.org/adaures/castopod/issues/94) [#120](https://code.castopod.org/adaures/castopod/issues/120)
* **migrations:** ignore invalid utf8 chars for media files metadata + update transcript parser ([45e8f99](45e8f99e75))
* minor corrections ([13be386](13be386842))
* move analytics to helper ([d311917](d31191732e))
* move html escaping on credits page ([fbffdbd](fbffdbde78))
* **multiselect:** add missing class names in choices options for purge to work properly ([719538d](719538d0cc))
* **notifications:** add trigger after activities update + update insert trigger ([e5d16e8](e5d16e8711))
* **notifications:** notify actors after activities insert / update using model callback methods ([e08555a](e08555a4e9))
* **open-graph:** replace non existant episode description to podcast description in podcast page ([b02584e](b02584ee60))
* overwrite common lang function to escape returned string ([4c490c1](4c490c15bb)), closes [#196](https://code.castopod.org/adaures/castopod/issues/196) [#198](https://code.castopod.org/adaures/castopod/issues/198)
* overwrite getActorById to return app's Actor entity ([f2bc2f7](f2bc2f7e01))
* **package.json:** update destination of postcss generation scripts ([21413f8](21413f8af3))
* **pages:** add locale to page cache ([8f999ce](8f999ce2f7))
* **partner:** set correct image URL ([61554be](61554be12a))
* pass timezone to relative time component to show the localized time in the UI ([b9db936](b9db936461))
* **persons:** prevent overflow of persons list by adding horizontal scroll ([9e8995d](9e8995dc6e))
* **persons:** set person picture as optional for better ux ([7fdea63](7fdea63de7)), closes [#125](https://code.castopod.org/adaures/castopod/issues/125)
* **platforms:** display platform link only when visible is toggled on ([6e503c8](6e503c8d61)), closes [#39](https://code.castopod.org/adaures/castopod/issues/39)
* **player-styling:** revert vite to 2.8 to reference the player css ([e07d3af](e07d3afea9))
* **podcast-activity:** check if transcript and chapters are set before including them in audio ([5855a25](5855a25093))
* **podcast-import:** move guid attribute declaration for Episode entity to include slug data ([5d02ae3](5d02ae3990))
* **podcast:** use markdown description value for editor + set prose class to about description ([f304d97](f304d97b14)), closes [#156](https://code.castopod.org/adaures/castopod/issues/156)
* prefill description footer input when creating a new episode ([9ea5ca3](9ea5ca3169))
* **premium-podcasts:** display unlock button in embed when premium episode ([ca109ba](ca109ba3a8))
* **premium-podcasts:** remove cache in unlock form + redirect to podcast if podcast is not premium ([242352c](242352c4d9))
* **premium-podcasts:** return different cached page when podcast is unlocked ([b1303c5](b1303c5255))
* **pwa:** add scope to webmanifests to allow installing an app per podcast ([74c683e](74c683eb44))
* **pwa:** set app display as standalone in the webmanifests ([7aa37d2](7aa37d24ac))
* re-order graph values ([35f633b](35f633b4c7))
* redirect to non cached views when authenticated in public views ([482b47b](482b47ba6b))
* **release:** add missing version number to castopod-host package ([8f3e9d9](8f3e9d90c1))
* remove cache from remote follow form to display error messages ([90e4443](90e44437bd))
* remove defer from js script declaration as it is a module ([18ae557](18ae557e97))
* remove fixed size from podcast sidebar + rearrange account info + space out import radio inputs ([776eec6](776eec6f0d))
* remove heavy image cover data from audio file metadata ([f74403b](f74403bd7a))
* remove required for other_categories field and add podcast_id to latest podcasts query ([5417be0](5417be0049))
* remove required property to persons picture ([c546be3](c546be385b)), closes [#125](https://code.castopod.org/adaures/castopod/issues/125)
* remove value escaping for form inputs and textareas ([bc6dea2](bc6dea2f8a))
* rename field status to task_status to get scheduled activities ([4ff82a5](4ff82a5f0a))
* rename issue_templates labels ([9f00305](9f00305844))
* rename MyAccount controller file ([e109df3](e109df3004)), closes [#60](https://code.castopod.org/adaures/castopod/issues/60)
* rename podcast name to podcast handle to clarify field usage ([9dd4c77](9dd4c7741e)), closes [#126](https://code.castopod.org/adaures/castopod/issues/126)
* reorder fields as composite primary keys for analytics tables ([9660aa9](9660aa97c8))
* replace deletedField with published_at for episodes ([14d7d07](14d7d07822))
* replace getWebEnclosureUrl with getEnclosureWebUrl ([8122cea](8122ceaf8a))
* replace hardcoded style links with vite service + set default value for remote transcript url ([3f2e056](3f2e05608e)), closes [#149](https://code.castopod.org/adaures/castopod/issues/149) [#150](https://code.castopod.org/adaures/castopod/issues/150)
* replace website key for webpages in breadcrumb translate file ([50e32ff](50e32ff756))
* restore default podcast icon on public website ([342778b](342778bac3))
* revert to beta.1's codeigniter4 version ([e831411](e831411270))
* rewrite regenerate image function to use saveSizes method from Image entity ([3889912](38899124ec))
* **router:** check if Accept header is set before getting value ([10a2ae0](10a2ae0248)), closes [#228](https://code.castopod.org/adaures/castopod/issues/228)
* **router:** trim URI slash to match same routes for URIs with and without trailing slash ([9e9375f](9e9375f9a2))
* **rss-import:** add Castopod user-agent, handle redirects for downloaded files, add Content namespace ([214243b](214243b3fe))
* **rss:** cast number type values to string in rss_helper ([7180ae9](7180ae9ec7)), closes [#148](https://code.castopod.org/adaures/castopod/issues/148)
* **rss:** do not escape podcast and episode titles in the xml ([0dd3b7e](0dd3b7e0bf)), closes [#138](https://code.castopod.org/adaures/castopod/issues/138) [#71](https://code.castopod.org/adaures/castopod/issues/71)
* **rss:** remove escaping for publisher and owner name ([6fc6347](6fc6347846))
* **rss:** round episode durations and soundbites ([c9fb987](c9fb987fcf)), closes [#214](https://code.castopod.org/adaures/castopod/issues/214)
* **rss:** set ❬itunes:author❭ tag to owner_name if publisher not specified ([2271c14](2271c1445b)), closes [#96](https://code.castopod.org/adaures/castopod/issues/96)
* **rss:** use originalPath instead of originalMediaPath in Image library ([b4012b7](b4012b7d2e))
* save transcript and chapters files to podcasts folder ([63f49c7](63f49c719f))
* **search-episodes:** add fallback sql query using LIKE for search query with less than 4 characters ([e66bf44](e66bf44341)), closes [#236](https://code.castopod.org/adaures/castopod/issues/236)
* **security:** add csrf filter + prevent xss attacks by escaping user input ([cd2e1e1](cd2e1e1dc3))
* set cache expiration to next note publish to show note on publication date ([0a66de3](0a66de3e6c))
* set episode description footer to null when empty value ([3a7d97d](3a7d97d660))
* set episode duration translation to hardcoded english ([c39efc9](c39efc9489)), closes [#64](https://code.castopod.org/adaures/castopod/issues/64)
* set episode guid upon episode creation ([ad8b153](ad8b153f2a)), closes [#48](https://code.castopod.org/adaures/castopod/issues/48)
* set episode numbers during import + remove all custom form_helpers + minor ui issues ([99a3b8d](99a3b8d33e))
* set interact_as_actor for user upon password reset ([ad8f5f5](ad8f5f5a0f)), closes [#178](https://code.castopod.org/adaures/castopod/issues/178)
* set localized slug_field key as string in french language ([17fb29b](17fb29b209))
* set location to null when getting empty string ([71b1b5f](71b1b5f775))
* set storage limit as disk_total_space instead of free space ([7512e2e](7512e2ed1f))
* **settings:** add .jpg extension to site-icon file input to display all jpeg images ([f611a16](f611a16cd0))
* **socialinteract:** move social interact uri into uri attribute + update social data upon import ([12b2200](12b22008a2))
* sort episodes by published_at with unpublished episodes at the begining ([1686f84](1686f840d1)), closes [#249](https://code.castopod.org/adaures/castopod/issues/249)
* sort episodic podcasts by season ([d7b6794](d7b6794f68))
* **themes:** update themes stylesheet route and remove css extension ([e4e7e00](e4e7e0005e))
* **types:** update fake seeders types + fix bugs ([76a4bf3](76a4bf3441))
* **ui:** remove empty tooltip when hovering on sponsor button ([40aa661](40aa661289))
* unpublish episode before deleting it + add validation step before deletion ([f75bd76](f75bd76458)), closes [#112](https://code.castopod.org/adaures/castopod/issues/112) [#55](https://code.castopod.org/adaures/castopod/issues/55)
* update .htaccess for shared hosting config ([2379826](2379826352))
* update broken contributor dropdown fields ([e5b7515](e5b7515023))
* update condition in AnalyticsTrait ([fbc0967](fbc0967caa))
* update condition in home controller to redirect to install page ([33f1b91](33f1b91d55))
* update conditions when checking for empty max_episodes and season_number ([fbad0b5](fbad0b59f6))
* update form_textarea to prevent escaping value ([78548b5](78548b5cd7))
* update iso-369 language table seeder ([0c90db4](0c90db44c4))
* update ivoox podcasting icon ([f2b69a4](f2b69a4733))
* update MarkdownEditor component + restyle Button and other components ([b05d177](b05d177f1b))
* update purgecss content path for php helper files ([eb70bb4](eb70bb4f70)), closes [#59](https://code.castopod.org/adaures/castopod/issues/59)
* update translations for settings' tasks to include what they should be used for ([06b1a8b](06b1a8b29b))
* use slash instead of backslash to call layout ([a80adb2](a80adb2295))
* use UTC_TIMESTAMP() to get current utc date instead of NOW() in sql queries ([4e22a0d](4e22a0d5e4))
* **users:** remove required roles input when editing user + prevent owner's roles from being edited ([1c8af75](1c8af7550b)), closes [#239](https://code.castopod.org/adaures/castopod/issues/239)
* **ux:** allow for empty message upon episode publication and warn user on submit ([33d01b8](33d01b8d4f)), closes [#129](https://code.castopod.org/adaures/castopod/issues/129)
* **ux:** have podcast dashboard card link to podcast dashboard if only one podcast in instance ([7dabee5](7dabee58a1))
* **ux:** redirect user to install page on database error in home page ([9017e30](9017e30bf4))
* validate slug length when submitting episode form + clean permalink edit prefix ([b07ac09](b07ac093b2))
* **video-clips:** check if created video exists before recreating it and failing ([dff1208](dff1208725))
* **video-clips:** clear video clip cache after process has finished ([3ae6232](3ae6232585))
* **video-clips:** create unique temporary files for resources to be deleted after generation ([7f7c878](7f7c878cb6))
* **video-clips:** set audio codec to aac, fixing audio issue on twitter ([3c22c68](3c22c68ee8))
* **video-clips:** set longer podcast and episode lengths for squared format ([c030113](c0301134c2))
* **video-clips:** tweak portrait parameters to have subtitles display without overflowing ([2385b1a](2385b1a292))
* **video-clips:** update condition to check if ffmpeg is installed ([b57f0b6](b57f0b6eb6)), closes [#163](https://code.castopod.org/adaures/castopod/issues/163)
* **xml-editor:** escape xml editor's content + restyle form sections to prevent overflowing ([588590b](588590bd2c))
* **xml-editor:** prettify xml even without root node ([ca55c24](ca55c248d0))

### Features

* **activitypub:** add Podcast actor and PodcastEpisode object with comments ([9e1e5d2](9e1e5d2e86))
* add about page in admin with instance info + database update button ([d0836f3](d0836f3ee3))
* add alternate rss feed link tag to podcast page head ([a973c09](a973c097d5)), closes [#35](https://code.castopod.org/adaures/castopod/issues/35)
* add analytics and unknown useragents ([ec92e65](ec92e65aa4))
* add audio-clipper toolbar + add video-clip-previewer ([0255753](02557539e6))
* add audio-clipper webcomponent (wip) ([21d4251](21d4251b9b))
* add autofocus to input field "Email or username" on login page ([19caed4](19caed4bce))
* add basic stats on podcast about page ([1670558](1670558473))
* add breadcrumb in admin area ([7fb1de2](7fb1de2cf3)), closes [#17](https://code.castopod.org/adaures/castopod/issues/17)
* add cache to ActivityPub sql queries + cache activity and note pages ([2d297f4](2d297f45b3))
* add CDN url ([972bcbf](972bcbf65e)), closes [#37](https://code.castopod.org/adaures/castopod/issues/37)
* add codemirror to display xml editor for custom rss field ([f15f262](f15f26240c))
* add cumulative listening time charts ([588b4d2](588b4d28da))
* add default icons to Alert component ([0d98001](0d9800123b))
* add DropdownMenu component + remove global audio player in admin ([abb7fba](abb7fbac27))
* add episode_numbering() component helper to display episode and season numbers ([3f4a6bd](3f4a6bd0b9))
* add french translation ([196920d](196920d62f))
* add heading component + update ecs rules to fix views ([23bdc6f](23bdc6f8e3))
* add housekeeping task to run after migrations ([89dee41](89dee41d58))
* add install wizard form to bootstrap database and create the first superadmin user ([cba871c](cba871c5df)), closes [#2](https://code.castopod.org/adaures/castopod/issues/2)
* add instructions on production error page to ease Castopod debugging process ([9eab54e](9eab54e085)), closes [#224](https://code.castopod.org/adaures/castopod/issues/224)
* add ISO 3166 country codes ([97cd94b](97cd94b474))
* add js audio player on podcast, admin and embeddable player pages + fix admon episodes ux ([0e14eb4](0e14eb4d3f)), closes [#131](https://code.castopod.org/adaures/castopod/issues/131)
* add label to sponsor button on podcast page ([c29c018](c29c018c7a)), closes [#162](https://code.castopod.org/adaures/castopod/issues/162)
* add legalNoticeURL to app config for setting an external url to legal notice ([711843a](711843a0c8))
* add lock podcast according to the Podcastindex podcast-namespace to prevent unauthozized import ([72b3012](72b301272e))
* add map analytics, add episodes analytics, clean analytics page layout, translate countries ([07eae83](07eae83a00))
* add media entity and link documents, images and audio files to it ([6ecf286](6ecf2866cf))
* add notifications inbox for actors ([999999e](999999e3ef)), closes [#215](https://code.castopod.org/adaures/castopod/issues/215)
* add Noto Sans Mono font to use for durations + button to access new video clip form in list ([7609bb6](7609bb6033))
* add npm for js dependencies + move src/ files to root folder ([cbb83a6](cbb83a6f30))
* add Open Graph and Twitter meta tags ([af970b8](af970b8bac)), closes [#41](https://code.castopod.org/adaures/castopod/issues/41)
* add pages table to store custom instance pages (eg. legal-notice, cookie policy, etc.) ([9c224a8](9c224a8ac6)), closes [#24](https://code.castopod.org/adaures/castopod/issues/24)
* add permanent delete feature for podcasts 🎉 ([dbb4030](dbb4030da4)), closes [#89](https://code.castopod.org/adaures/castopod/issues/89)
* add platform models ([a333d29](a333d29196))
* add platforms form in podcast settings ([043f49c](043f49c784))
* add platforms tables ([ce59344](ce5934419a))
* add podcast banner field for each podcast + refactor images configuration ([4a8147b](4a8147bfbb))
* add premium podcasts to manage subscriptions for premium episodes ([3234500](3234500e2d)), closes [#193](https://code.castopod.org/adaures/castopod/issues/193)
* add publish feature for podcasts and set draft by default ([3d363f2](3d363f2efe)), closes [#128](https://code.castopod.org/adaures/castopod/issues/128) [#220](https://code.castopod.org/adaures/castopod/issues/220)
* add remote_url alternative for transcript and chapters files ([3143c9a](3143c9ad36))
* add replied to post or comment to reply element ([d0f9c60](d0f9c6018f))
* add schema.org json-ld objects to podcasts, episodes, posts and comments pages ([902f959](902f959b30))
* add task to housekeeping setting for resetting all instance counts ([9303e51](9303e51bc5))
* add unique listeners analytics ([3a49258](3a4925816f))
* add update rss feed feature for podcasts to import their latest episodes ([5eb9dc1](5eb9dc168e)), closes [#183](https://code.castopod.org/adaures/castopod/issues/183)
* add user permissions and basic groups to handle authorizations ([d58e518](d58e51874a)), closes [#3](https://code.castopod.org/adaures/castopod/issues/3) [#18](https://code.castopod.org/adaures/castopod/issues/18)
* add WebSub module for pushing feed updates to open hubs ([10d3f73](10d3f73786))
* **admin:** add instance wide dashboard with storage and bandwidth usage ([b1a6c02](b1a6c02e56)), closes [#216](https://code.castopod.org/adaures/castopod/issues/216)
* **admin:** add search form in podcast episodes list ([6be5d12](6be5d12877)), closes [#26](https://code.castopod.org/adaures/castopod/issues/26)
* **admin:** make header stick on scroll and show title + action buttons using css only ([d60498c](d60498c1be))
* **admin:** update admin layout for better ux + update brand pine colors ([d86142e](d86142ebe7))
* allow cross origin requests on episode comments ([e12f95a](e12f95aca1))
* **analytics-gdpr:** update cached personal data to expire at midnight ([0188b67](0188b67354))
* **analytics:** add 'other' group to pie charts in order to display more accurate data ([73acef9](73acef933f))
* **analytics:** add charts and data export ([78625c4](78625c471b))
* **analytics:** add current date and secret salt to analytics hash for improved privacy ([6f2e7c0](6f2e7c009c))
* **analytics:** add service name from rss user-agent ([7202b98](7202b9867b))
* **analytics:** add weekday and hour bar charts ([8ab3132](8ab313296b))
* **api:** add rest api with podcasts read endpoints ([e64001d](e64001d006)), closes [#210](https://code.castopod.org/adaures/castopod/issues/210)
* apply colour theme to embed player ([9548337](9548337a7c)), closes [#201](https://code.castopod.org/adaures/castopod/issues/201)
* **auth:** add auth.enable2FA config to enable two-factor authentication ([7213ed2](7213ed290c))
* build hashed static files to renew browser cache ([37c54d2](37c54d2477)), closes [#107](https://code.castopod.org/adaures/castopod/issues/107)
* **cache:** add podcast and episode pages to cache + clear them after insert or update ([da0f047](da0f047281))
* **categories:** create model, entity, migrations and seeds ([f73b042](f73b042cc0))
* **clips:** setup clip entities and model + save video clip to have it generated in the background ([2f6fdf9](2f6fdf9091))
* **comments:** add comments to episodes + update naming of status to post ([bb4752c](bb4752c35e))
* **comments:** add like / undo like to comment + add comment page ([0c187ef](0c187ef7a9))
* **components:** add custom view renderer with ComponentRenderer adapted from bonfire2 ([a95de8b](a95de8bab0))
* create optimized & resized images upon upload ([02e4441](02e4441f98)), closes [#6](https://code.castopod.org/adaures/castopod/issues/6)
* **custom-rss:** add custom xml tag injection in rss feed for ❬channel❭ and ❬item❭ ([6ecdaad](6ecdaad911))
* **datetime-picker:** set material_green theme to flatpickr ([3ce6541](3ce6541003))
* **devcontainer:** add devcontainer settings for dev environment ([69e7266](69e7266736))
* display castopod version in admin footer ([9f2574e](9f2574e6fb)), closes [#68](https://code.castopod.org/adaures/castopod/issues/68)
* display legal disclaimer and warning on podcast import page ([2f07992](2f07992e55)), closes [#34](https://code.castopod.org/adaures/castopod/issues/34)
* edit + delete podcast and episode ([ac5f0c7](ac5f0c7328))
* **embeddable-player:**  add embeddable player widget ([141788f](141788fa08))
* enhance admin ui with responsive design and ux improvements ([2d44b45](2d44b457a0)), closes [#31](https://code.castopod.org/adaures/castopod/issues/31) [#9](https://code.castopod.org/adaures/castopod/issues/9)
* enhance ui using javascript in admin area ([c0e66d5](c0e66d5f70))
* **episode-unpublish:** remove episode comments upon unpublish ([78acd7f](78acd7f5c0))
* **episode:** add form to allow editing episode's publication date to a past date ([d783d16](d783d16eb7)), closes [#97](https://code.castopod.org/adaures/castopod/issues/97)
* **episodes:** add create form and view pages for episode ([f3b2c8b](f3b2c8b84f)), closes [#1](https://code.castopod.org/adaures/castopod/issues/1)
* **episodes:** add migrations, model and entity for episodes table ([0444821](044482174e))
* **episodes:** replace all audio file URL parameters with base64 encoded data ([e1f65cd](e1f65cd3b5))
* **episodes:** replace soft delete with permanent delete ([eb9ff52](eb9ff522c2))
* **episodes:** schedule episode with future publication_date by using cache expiration time ([4f1e773](4f1e773c0f)), closes [#47](https://code.castopod.org/adaures/castopod/issues/47)
* **fediverse:** implement activitypub protocols + update user interface ([2f525c0](2f525c0f6e)), closes [#69](https://code.castopod.org/adaures/castopod/issues/69) [#65](https://code.castopod.org/adaures/castopod/issues/65) [#85](https://code.castopod.org/adaures/castopod/issues/85) [#51](https://code.castopod.org/adaures/castopod/issues/51) [#91](https://code.castopod.org/adaures/castopod/issues/91) [#92](https://code.castopod.org/adaures/castopod/issues/92) [#88](https://code.castopod.org/adaures/castopod/issues/88)
* **fonts:** replace Montserrat with Inter for better readablity ([bfa11d0](bfa11d007d))
* **GDPR:** add GDPR.yml file to public/.well-known/ ([86bccc3](86bccc3d5c))
* **gdpr:** add purpose for granting access to premium content ([47d6d81](47d6d81b79))
* **home:** sort podcasts by recent activity + add dropdown menu to choose between sorting options ([7b89da6](7b89da6106)), closes [#164](https://code.castopod.org/adaures/castopod/issues/164)
* **housekeeping:** add clear_cache option to flush redis or files cache ([99bfac0](99bfac0b42))
* **i18n:** add 7 new languages + update german translations ([d021abb](d021abb52f))
* **i18n:** add german language as supported locale + create Language files from english source ([c220b31](c220b310ed))
* **i18n:** add Norwegian Nynorsk to supported locales ([ced61fc](ced61fc236))
* **i18n:** add Polish translation ([2d83b44](2d83b44add))
* **i18n:** add Spanish to supported locales ([e340b54](e340b54a84))
* **i18n:** add support for German and Brazilian Portuguese languages ([c9b9fe4](c9b9fe4ee8))
* **i18n:** add support for Simplified Chinese (zh-Hans) and Catalan (ca) locales ([48d1443](48d1443472))
* **icons:** add default icons for podcasting, social and funding platforms + remove complex icons ([5bcdfeb](5bcdfebe64)), closes [#166](https://code.castopod.org/adaures/castopod/issues/166) [#167](https://code.castopod.org/adaures/castopod/issues/167) [#170](https://code.castopod.org/adaures/castopod/issues/170)
* **icons:** add podnews icon to podcasting platforms ([5f42355](5f423557c2)), closes [#190](https://code.castopod.org/adaures/castopod/issues/190)
* import podcast from an rss feed url ([9a5d5a1](9a5d5a15b4)), closes [#21](https://code.castopod.org/adaures/castopod/issues/21)
* integrate stylized form components and update podcast edit page ([6536729](6536729546))
* make displayed publication time as relative time using @github/time-elements ([230e139](230e139e43))
* make episode description more visible on episode pages ([90533be](90533be029)), closes [#171](https://code.castopod.org/adaures/castopod/issues/171)
* **map:** display geolocated episodes on a map page ([4357cc2](4357cc25cc))
* **media:** clean media api + create an entity per media type ([fafaa7e](fafaa7e689))
* **media:** save audio, images, transcripts and chapters to media for episode and persons ([58e2a00](58e2a00a87))
* **meta-tags:** add activitypub alternate links to podcast, episode, comment and post pages ([bd61752](bd61752be2))
* minor corrections to some tables ([3bf9420](3bf9420b59))
* **monetization:** add Web Monetization support ([96a6026](96a6026f1d))
* **nodeinfo2:** add .well-known route for nodeinfo2 containing metadata about the castopod instance ([88fddc8](88fddc81d7))
* **partner:** add link and image in episode description ([ad07bb9](ad07bb9330))
* **person:** add podcastindex.org namespace person tag ([8acd011](8acd011f13))
* **platforms:** add AntennaPod ([53e9cfd](53e9cfd61c))
* **platforms:** add Fediverse and some funding platforms, add link on logo ([afc3d50](afc3d50289))
* **platforms:** add helloasso ([16cb993](16cb993ee6))
* **platforms:** add missing newpodcastapps.com's platforms ([92dd370](92dd370e2f))
* **platforms:** add pod.link ([3d7a232](3d7a2320dd))
* **platforms:** add Podcast Index ([ad52b1c](ad52b1cc2b))
* **platforms:** add podfriend ([9fdc8d3](9fdc8d3293))
* **podcast-form:** add new_feed_url field to set an url when changing domain or host ([e7eec48](e7eec48e7b))
* **podcast-form:** update routes and redirect to podcast page ([12ce905](12ce905799))
* **podcast:** create a podcast using form ([1202ba3](1202ba3545))
* **podcasting 2.0:** update podcast:social tag to adhere to latest spec ([a597cf4](a597cf4ecf))
* prefill season and episode numbers + set episode number as mandatory for serial podcasts ([07d740b](07d740b79f)), closes [#134](https://code.castopod.org/adaures/castopod/issues/134) [#136](https://code.castopod.org/adaures/castopod/issues/136)
* **public-ui:** adapt public podcast and episode pages to wireframes ([40a0535](40a0535fc1)), closes [#30](https://code.castopod.org/adaures/castopod/issues/30) [#13](https://code.castopod.org/adaures/castopod/issues/13)
* **pwa:** add service-worker + webmanifest for each podcasts to have them install on devices ([fee2c1c](fee2c1c0d0))
* redesign public podcast and episode pages + remove any information clutter for better ux ([9321400](932140077c))
* replace form helper functions with components in admin template ([e64548b](e64548b982))
* replace slug field with interactive permalink component ([578022b](578022b8c5))
* restyle episode and person cards + add focus style to interactive elements for a11y ([a505a1d](a505a1de56))
* **rss:** add ˂podcast:guid˃ tag for channel ([1fab10e](1fab10eb0d))
* **rss:** add podcast-namespace tags for platforms + previousUrl tag ([dbba8dc](dbba8dc581)), closes [#73](https://code.castopod.org/adaures/castopod/issues/73) [#75](https://code.castopod.org/adaures/castopod/issues/75) [#76](https://code.castopod.org/adaures/castopod/issues/76) [#80](https://code.castopod.org/adaures/castopod/issues/80)
* **rss:** add podcast:comments tag to link to episode comments ([32e8c7c](32e8c7c16a))
* **rss:** add podcast:location tag ([c0a2282](c0a22829bd))
* **rss:** add rss feed route without the `.xml` extension ([94c0b7c](94c0b7c159)), closes [#247](https://code.castopod.org/adaures/castopod/issues/247)
* **rss:** add soundbites according to the podcastindex specs ([6b34617](6b34617d07)), closes [#83](https://code.castopod.org/adaures/castopod/issues/83)
* **rss:** add transcript and chapters support ([e769d83](e769d83a93)), closes [#72](https://code.castopod.org/adaures/castopod/issues/72) [#82](https://code.castopod.org/adaures/castopod/issues/82)
* **rss:** generate rss feed from podcast entity ([c815ecd](c815ecd664))
* **rss:** update monetization tag so that it meets PodcastIndex requirements ([4c7ecbe](4c7ecbee83))
* **select:** enhance select input with choices.js ([910d457](910d457cf8))
* set app parameter forceGlobalSecureRequests = true forcing requests to go through https ([d9dff1b](d9dff1b8bf))
* set podcast / episode description in the pages description meta tag ([1c4a504](1c4a50442b)), closes [#44](https://code.castopod.org/adaures/castopod/issues/44)
* **settings:** add general config for instance (site name, description and icon) ([5c56f3e](5c56f3e6f0))
* **settings:** add theme settings to set an accent color for all public pages ([5c529a8](5c529a83aa))
* simplify podcast page's layout for better ux ([2c0efc6](2c0efc6563))
* **soundbites:** add soundbite list and creation forms with audio-clipper component ([de19317](de19317138))
* style file inputs using tailwind's file class ([8208ab6](8208ab6785))
* **themes:** add ViewThemes library to set views in root themes folder ([7a27676](7a276764e6))
* **themes:** set different default banner per theme ([11c916f](11c916fe43))
* **themes:** set generic css variables for colors to enable instance themes ([a746a78](a746a781b4))
* toggle podcast sidebar on smaller screens ([f0205ec](f0205ec274))
* **transcript:** parse srt subtitles into json file + add max file size info below audio file input ([0098761](00987610a0))
* **ui:** create ViewComponents library to enable building class and view files components ([94872f2](94872f2338))
* update analytics so to meet IABv2 requirements ([03e23a2](03e23a28bf)), closes [#10](https://code.castopod.org/adaures/castopod/issues/10)
* update pine colors + create charts components ([a50abc1](a50abc138d))
* **users:** add myth-auth to handle users crud + add admin gateway only accessible by login ([c63a077](c63a077618)), closes [#11](https://code.castopod.org/adaures/castopod/issues/11)
* **ux:** remove admin dashboard and redirect directly to podcast list ([27c48b8](27c48b8fa9))
* **video-clip:** add video-clip page with video preview + logs ([42538dd](42538dd757))
* **video-clip:** generate video clips in the bg using a cron job + add video clip page + tidy up UI ([db0e427](db0e4272bd))
* **video-clips:** add dimensions for portrait and squared formats ([3af404d](3af404da3d))
* **video-clips:** add new themes + add castopod logo as a watermark ([1d1490b](1d1490b06a))
* **video-clips:** add route for scheduled video clips + list video clips with status ([2065ebb](2065ebbee5))
* **video-clips:** allow episodeNumbering text to stand in the indent of episodeTitle paragraph ([71a063d](71a063dac3))
* **video-clips:** generate a 16:9 video using ffmpeg ([35aa7ea](35aa7ea5d9))
* **video-clips:** generate subtitles clip using transcript json to have subtitles accross video ([3ce07e4](3ce07e455d))
* **video-clips:** replace hardcoded colors with config's theme colors ([e462abf](e462abf6d6))
* **vite:** add vite config to decouple it from CI_ENVIRONMENT ([8721719](8721719cd7))
* write id3v2 tags to episode's audio file ([4651d01](4651d01a84))

### Performance Improvements

* **cache:** update CI4 to use cache's deleteMatching method ([54b84f9](54b84f9684))
* **cache:** use deleteMatching method to prevent forgetting cached elements in models ([76afc0c](76afc0cfa2))
* defer javascript + lazy load images for faster page loads ([f0685e4](f0685e4479))
* **docker:** add redis caching service for development ([05ace8c](05ace8cff2))

### Reverts

* **install:** redirect to install in homepage if no database was set ([73f094d](73f094daf2))
* set deprecated config options back in App config ([433745f](433745f194))
* **soundbites:** remove soundbite table from episode's public page ([5dc0f19](5dc0f19656))
* use basic input file for episodes audio files instead of button for better UX ([d5f22fb](d5f22fbb38))

### BREAKING CHANGES

* **analytics:** analytics_podcasts_by_player table and analytics_podcasts procedure were updated
2022-10-20 08:17:21 +00:00
.devcontainer refactor(auth): replace myth/auth with codeigniter/shield + define new roles 2022-10-16 13:35:26 +00:00
.github docs: add FUNDING.yml file to set up github sponsor button 2022-03-14 17:04:22 +00:00
.gitlab/issue_templates docs(init): create documentation website using vitepress 2022-02-19 16:06:11 +00:00
.husky ci(git-hooks): add verbose param to commitlint command 2021-06-11 09:35:13 +00:00
app chore(release): 1.0.0 [skip ci] 2022-10-20 08:17:21 +00:00
docker build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
docs chore: new Crowdin updates 2022-10-20 07:55:28 +00:00
initdb chore: create test database on mariadb init + harmonize test database credentials 2022-06-22 14:28:58 +00:00
modules chore: new Crowdin updates 2022-10-20 07:55:28 +00:00
public build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
scripts build(docker): add build for tagged versions on main, beta and alpha 2022-08-23 09:50:00 +00:00
tests build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
themes fix: validate slug length when submitting episode form + clean permalink edit prefix 2022-10-19 14:56:39 +00:00
writable fix(video-clips): create unique temporary files for resources to be deleted after generation 2022-01-21 12:35:50 +00:00
.all-contributorsrc docs(all-contributors): add irithys, caos30 and ghose as translators 2022-09-06 15:30:07 +00:00
.browserslistrc refactor: update js files to typescript and replace parcel with rollup 2020-10-15 14:41:12 +00:00
.editorconfig refactor: add php_codesniffer to define castopod's coding style based on psr-1 2020-10-15 14:41:22 +00:00
.env.example docs(install): add email/smtp configuration options 2022-09-26 14:55:00 +00:00
.eslintrc.json ci: add phpstan static analysis to .gitlabci.yml 2021-05-12 15:23:50 +00:00
.gitignore feat(GDPR): add GDPR.yml file to public/.well-known/ 2022-03-15 17:00:34 +00:00
.gitlab-ci.yml build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
.prettierrc.json style(ecs): add easy-coding-standard to enforce coding style rules for php 2021-06-11 09:34:48 +00:00
.releaserc.json docs(init): create documentation website using vitepress 2022-02-19 16:06:11 +00:00
.rsync-filter build: add spark to Castopod bundle for handling CLI requests 2022-09-08 12:50:25 +00:00
.stylelintrc.json feat(fediverse): implement activitypub protocols + update user interface 2021-04-02 17:20:02 +00:00
.svgo.icons.js feat(fediverse): implement activitypub protocols + update user interface 2021-04-02 17:20:02 +00:00
.svgo.js feat(fediverse): implement activitypub protocols + update user interface 2021-04-02 17:20:02 +00:00
AUTHORS.md docs(init): create documentation website using vitepress 2022-02-19 16:06:11 +00:00
CHANGELOG.md chore(release): 1.0.0 [skip ci] 2022-10-20 08:17:21 +00:00
CODE_OF_CONDUCT.md docs(init): create documentation website using vitepress 2022-02-19 16:06:11 +00:00
CONTRIBUTING.md docs(contributions): recognize any kind of contribution with all-contributors spec 2022-07-07 16:41:34 +00:00
DEPENDENCIES.md docs(init): create documentation website using vitepress 2022-02-19 16:06:11 +00:00
GDPR.txt feat(gdpr): add purpose for granting access to premium content 2022-09-29 14:09:19 +00:00
LICENSE.md feat(fediverse): implement activitypub protocols + update user interface 2021-04-02 17:20:02 +00:00
README.md docs(all-contributors): add irithys, caos30 and ghose as translators 2022-09-06 15:30:07 +00:00
builds build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
captainhook.json style(ecs): add easy-coding-standard to enforce coding style rules for php 2021-06-11 09:34:48 +00:00
commitlint.config.js feat: enhance ui using javascript in admin area 2020-10-15 14:41:09 +00:00
composer.json chore(release): 1.0.0 [skip ci] 2022-10-20 08:17:21 +00:00
composer.lock build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
crontab feat: add WebSub module for pushing feed updates to open hubs 2022-03-15 16:47:35 +00:00
crowdin.yml chore: update crowdin.yml config 2022-04-15 11:54:33 +00:00
docker-compose.yml fix(email): set the correct url in the activation and forgot emails 2022-08-24 09:45:36 +00:00
ecs.php build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
env chore: upgrade CI4 to v4.2.5 + update other dependencies to latest 2022-08-31 10:50:19 +00:00
package-lock.json chore(release): 1.0.0 [skip ci] 2022-10-20 08:17:21 +00:00
package.json chore(release): 1.0.0 [skip ci] 2022-10-20 08:17:21 +00:00
phpstan.neon feat(auth): add auth.enable2FA config to enable two-factor authentication 2022-10-16 13:35:48 +00:00
phpunit.xml.dist refactor(rest-api): move rest api's enabled flag to the RestApi config 2022-06-29 16:22:10 +00:00
postcss.config.js fix(xml-editor): prettify xml even without root node 2022-07-03 08:07:20 +00:00
preload.php build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
rector.php build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
spark build: set minimal php version to 8.1 2022-10-17 14:17:50 +00:00
tailwind.config.js feat: add premium podcasts to manage subscriptions for premium episodes 2022-09-28 15:02:09 +00:00
tsconfig.json fix(rss): do not escape podcast and episode titles in the xml 2021-12-29 11:37:16 +00:00
vite-manifest-css.ts feat: build hashed static files to renew browser cache 2021-07-12 17:47:56 +00:00
vite.config.ts feat: add instructions on production error page to ease Castopod debugging process 2022-09-28 12:49:36 +00:00

README.md

release-badge license-badge crowdin-badge contributions-badge semantic-release-badge discord-badge stars-badge

Castopod is a free and open-source podcast hosting solution made for podcasters who want engage and interact with their audience.

Status

Castopod is currently in beta but already quite stable and used by podcasters around the world!

Getting started

To get started with Castopod, you may check out the documentation, everything should be there!

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

Contributing

Contributions are always welcome!

See the contribution guidelines for ways to get started.

Note

Any contribution made on a repository other than the original repository will not be accepted.

Contributors

Thanks goes to these wonderful people (emoji key):


Yassine Doghri

💻 🐛 📖 👀 🚧 🖋 🎨 🌍 💬 🧑‍🏫 🚇 🤔 📆 📝

Benjamin Bellamy

💻 🐛 👀 🖋 🌍 💬 🚇 🤔 📝 📆 📢

Ola Hneini

💻 👀 📖 🚧 💬 🤔

Romain de Laage

💻 🚇 📖 🌍 🤔

Lyonel Bernard

🐛 💬 🔊 🤔

Christopher Lagonick-Weitzel

🐛 💬 🔊 🤔

Ernesto Acosta

🐛 🔊 🌍 💬 🤔

Bastien Luneteau

💻 🐛

Cécile Ricordeau

🎨

Patryk Miś

🌍

Marcin Lewandowski

🐛 🤔

Sebastian Janik

💻

Patryk Karczmarczyk

💻

denis d

🐛 🤔

Douglas Kastle

🐛 🤔

cExplorer

🐛 🌍

ImaCrea

🐛 🤔

Jonas S

💻

LEFEBVRE Yann

🐛

Sebastian Späth

🐛 🤔

rocky III

🐛

Hermann Josef Eckl

🐛

Delhaye Cyrille

🐛 🤔

João Leandro

🌍 🤔

Angelos Chouvardas

🌍

Eivind

🌍

Ewen

🌍 🤔

forght

🌍

glottis0q

🌍

ButterflyOfFire

🌍

Lucian I. Last

🌍

LuuzViir

🌍

CTHTC

🌍

Russian Retro

🌍

Marek L'ach

🌍

GunChleoc

🌍

GabiSnow

🌍

bendaha

🌍

Samuel Roland

🌍

Dimitri Regnier

🤔

irithys

🌍

Sergi

🌍

ghose (XoseM)

🌍

This project follows the all-contributors specification. Contributions of any kind welcome!

Contact

You may reach us for help or ask any question you have on:

  • Discord (for direct interaction with developers and the community)
  • Issue tracker (for feature requests & bug reports)

Alternatively, you can follow us on social media platforms to get news about 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.

Netlify NLnet Logo

License

GNU Affero General Public License v3.0

Copyright © 2020-present, Ad Aures.