Commit Graph

142 Commits

Author SHA1 Message Date
Yassine Doghri 2a2cb3efdb chore: upgrade CI4 to v4.2.5 + update other dependencies to latest
- add file associations for env and .rsync-filter files
- include version lens to .devcontainer config
2022-08-31 10:50:19 +00:00
Yassine Doghri 37f086075e chore: update CodeIgniter to 4.2.4 + other dependencies to latest 2022-08-22 15:36:29 +00:00
semantic-release-bot 9222975856 chore(release): 1.0.0-beta.20 [skip ci]
# [1.0.0-beta.20](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.19...v1.0.0-beta.20) (2022-08-12)

### Bug Fixes

* add underline and semibold font weight for prose links to have them stand out ([d4d8671](d4d867121c))
* **router:** check if Accept header is set before getting value ([10a2ae0](10a2ae0248)), closes [#228](https://code.castopod.org/adaures/castopod/issues/228)
* **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)
* set interact_as_actor for user upon password reset ([ad8f5f5](ad8f5f5a0f)), closes [#178](https://code.castopod.org/adaures/castopod/issues/178)

### Features

* add label to sponsor button on podcast page ([c29c018](c29c018c7a)), closes [#162](https://code.castopod.org/adaures/castopod/issues/162)
* add notifications inbox for actors ([999999e](999999e3ef)), closes [#215](https://code.castopod.org/adaures/castopod/issues/215)
2022-08-12 16:37:29 +00:00
semantic-release-bot fab916ee8a chore(release): 1.0.0-beta.19 [skip ci]
# [1.0.0-beta.19](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.18...v1.0.0-beta.19) (2022-07-21)

### Bug Fixes

* **episode-unpublish:** set consistent posts_counts' increments/decrements for actors and episodes ([8acdafd](8acdafd260)), closes [#233](https://code.castopod.org/adaures/castopod/issues/233)
* **get_browser_language:** return defaultLocale if browser doesn't send user preferred language ([9cc2996](9cc2996261))

### Features

* **episode-unpublish:** remove episode comments upon unpublish ([78acd7f](78acd7f5c0))
2022-07-21 17:04:07 +00:00
semantic-release-bot 455efae00f chore(release): 1.0.0-beta.18 [skip ci]
# [1.0.0-beta.18](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.17...v1.0.0-beta.18) (2022-07-07)

### Bug Fixes

* **player-styling:** revert vite to 2.8 to reference the player css ([e07d3af](e07d3afea9))

### Features

* add legalNoticeURL to app config for setting an external url to legal notice ([711843a](711843a0c8))
2022-07-07 17:37:01 +00:00
semantic-release-bot 98a8a480a7 chore(release): 1.0.0-beta.17 [skip ci]
# [1.0.0-beta.17](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.16...v1.0.0-beta.17) (2022-07-06)

### Bug Fixes

* explicitly cast seconds to int in iso8601_duration helper function ([779653f](779653f75b))
* **housekeeping:** use EpisodeModel's builder to reset comments count ([65e9c0b](65e9c0b05e))
* **rss:** round episode durations and soundbites ([c9fb987](c9fb987fcf)), closes [#214](https://code.castopod.org/adaures/castopod/issues/214)
* **xml-editor:** prettify xml even without root node ([ca55c24](ca55c248d0))

### Features

* 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)
* **admin:** add instance wide dashboard with storage and bandwidth usage ([b1a6c02](b1a6c02e56)), closes [#216](https://code.castopod.org/adaures/castopod/issues/216)
* **datetime-picker:** set material_green theme to flatpickr ([3ce6541](3ce6541003))
2022-07-06 15:47:53 +00:00
Yassine Doghri 81f790868a chore: update quality tools + rewrite some migration files
* update php packages to latest
* update rector and ecs config
* update ci4/settings package to v2.1
2022-07-03 16:42:20 +00:00
semantic-release-bot de8b1df948 chore(release): 1.0.0-beta.16 [skip ci]
# [1.0.0-beta.16](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.15...v1.0.0-beta.16) (2022-06-24)

### Bug Fixes

* change image size requirement hints ([ea20206](ea20206ee6))

### Features

* add update rss feed feature for podcasts to import their latest episodes ([5eb9dc1](5eb9dc168e)), closes [#183](https://code.castopod.org/adaures/castopod/issues/183)
* **admin:** add search form in podcast episodes list ([6be5d12](6be5d12877)), closes [#26](https://code.castopod.org/adaures/castopod/issues/26)
* **api:** add rest api with podcasts read endpoints ([e64001d](e64001d006)), closes [#210](https://code.castopod.org/adaures/castopod/issues/210)
2022-06-24 08:06:30 +00:00
Yassine Doghri 9f4a467ad4 chore: update CI4 to 4.2.1 2022-06-17 08:14:39 +00:00
semantic-release-bot cca973e9c2 chore(release): 1.0.0-beta.15 [skip ci]
# [1.0.0-beta.15](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.14...v1.0.0-beta.15) (2022-06-14)

### Bug Fixes

* replace deletedField with published_at for episodes ([14d7d07](14d7d07822))

### Features

* add default icons to Alert component ([0d98001](0d9800123b))
* add permanent delete feature for podcasts 🎉 ([dbb4030](dbb4030da4)), closes [#89](https://code.castopod.org/adaures/castopod/issues/89)
* apply colour theme to embed player ([9548337](9548337a7c)), closes [#201](https://code.castopod.org/adaures/castopod/issues/201)
* **episodes:** replace soft delete with permanent delete ([eb9ff52](eb9ff522c2))
2022-06-14 13:35:04 +00:00
Yassine Doghri 14d7d07822 fix: replace deletedField with published_at for episodes
- remove delete_at field + soft delete for media and pages
- update CodeIgniter4 to 4.2.0 + update all starter files
- explicitly use builder() when creating queries from model
2022-06-13 16:30:34 +00:00
semantic-release-bot 3240ed4177 chore(release): 1.0.0-beta.14 [skip ci]
# [1.0.0-beta.14](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.13...v1.0.0-beta.14) (2022-04-23)

### Bug Fixes

* **home:** remove hardcoded prefix in getAllPodcasts query ([92d5cc5](92d5cc50a3))
* 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)

### Features

* **i18n:** add Spanish to supported locales ([e340b54](e340b54a84))
2022-04-23 08:32:31 +00:00
semantic-release-bot e787b6b6e7 chore(release): 1.0.0-beta.13 [skip ci]
# [1.0.0-beta.13](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.12...v1.0.0-beta.13) (2022-04-14)

### Bug Fixes

* **rss:** remove escaping for publisher and owner name ([e2046e4](e2046e4b11))
* use UTC_TIMESTAMP() to get current utc date instead of NOW() in sql queries ([853a6ba](853a6ba915))

### Features

* **i18n:** add Norwegian Nynorsk to supported locales ([744340d](744340df61))
2022-04-14 15:31:04 +00:00
semantic-release-bot 366eaeb09e chore(release): 1.0.0-beta.12 [skip ci]
# [1.0.0-beta.12](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2022-04-05)

### Bug Fixes

* update form_textarea to prevent escaping value ([78548b5](78548b5cd7))

### Features

* **i18n:** add support for German and Brazilian Portuguese languages ([19da003](19da003fd3))
2022-04-05 16:57:10 +00:00
semantic-release-bot 73ad94c1d5 chore(release): 1.0.0-beta.11 [skip ci]
# [1.0.0-beta.11](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2022-04-01)

### Bug Fixes

* change message upon cancellation of episode publication ([9859c74](9859c7434c))
* prefill description footer input when creating a new episode ([9ea5ca3](9ea5ca3169))
* remove value escaping for form inputs and textareas ([bc6dea2](bc6dea2f8a))
* restore default podcast icon on public website ([342778b](342778bac3))
* **socialinteract:** move social interact uri into uri attribute + update social data upon import ([12b2200](12b22008a2))

### Features

* **analytics-gdpr:** update cached personal data to expire at midnight ([0188b67](0188b67354))
* **analytics:** add current date and secret salt to analytics hash for improved privacy ([6f2e7c0](6f2e7c009c))
* **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))
* **icons:** add podnews icon to podcasting platforms ([5f42355](5f423557c2)), closes [#190](https://code.castopod.org/adaures/castopod/issues/190)
2022-04-01 16:45:29 +00:00
semantic-release-bot 086a79c9de chore(release): 1.0.0-beta.10 [skip ci]
# [1.0.0-beta.10](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2022-03-15)

### Bug Fixes

* add explicit int conversion when formatting episode duration ([1253096](1253096197))
* add href to castopod website on login page ([cc54257](cc54257351))
* move html escaping on credits page ([fbffdbd](fbffdbde78))
* remove cache from remote follow form to display error messages ([90e4443](90e44437bd))

### Features

* add autofocus to input field "Email or username" on login page ([19caed4](19caed4bce))
* add WebSub module for pushing feed updates to open hubs ([10d3f73](10d3f73786))
* **GDPR:** add GDPR.yml file to public/.well-known/ ([86bccc3](86bccc3d5c))
2022-03-15 17:22:56 +00:00
semantic-release-bot 01041775e0 chore(release): 1.0.0-beta.9 [skip ci]
# [1.0.0-beta.9](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.8...v1.0.0-beta.9) (2022-03-04)

### Bug Fixes

* **cache:** delete posts and comments pages cache when updating platform links ([f7c3e5b](f7c3e5bf4a)), closes [#169](https://code.castopod.org/adaures/castopod/issues/169)
* escape characters for `min` in format_duration_symbol ([3b6722a](3b6722a42b))
* **security:** add csrf filter + prevent xss attacks by escaping user input ([cd2e1e1](cd2e1e1dc3))
* update ivoox podcasting icon ([f2b69a4](f2b69a4733))
* **video-clips:** update condition to check if ffmpeg is installed ([b57f0b6](b57f0b6eb6)), closes [#163](https://code.castopod.org/adaures/castopod/issues/163)

### Features

* **i18n:** add Polish translation ([2d83b44](2d83b44add))
* **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)
* make episode description more visible on episode pages ([90533be](90533be029)), closes [#171](https://code.castopod.org/adaures/castopod/issues/171)
* **podcasting 2.0:** update podcast:social tag to adhere to latest spec ([a597cf4](a597cf4ecf))
2022-03-04 18:14:17 +00:00
Yassine Doghri cd2e1e1dc3 fix(security): add csrf filter + prevent xss attacks by escaping user input
- update CI4 to v4.1.9's stable production package
- update php and js dependencies to latest
2022-03-04 14:36:32 +00:00
Yassine Doghri f58f712aa6 chore: replace group slug from ad-aures to adaures in repo url
this fixes the adblocker loading viewer error
2022-02-20 13:23:57 +00:00
Yassine Doghri fa5b5f51a4 docs(init): create documentation website using vitepress
- rename podlibre to adaures
- rename castopod-host to castopod
- simplify README and redirect to docs site
- move INSTALL and UPDATE docs
- add new gitlabci pipeline to deploy docs
- upgrade node to v16 in Dockerfile
2022-02-19 16:06:11 +00:00
semantic-release-bot 472842fae6 chore(release): 1.0.0-beta.8 [skip ci]
# [1.0.0-beta.8](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2022-02-10)

### Features

* **podcast-form:** add new_feed_url field to set an url when changing domain or host ([e7eec48](e7eec48e7b))
2022-02-10 11:19:13 +00:00
semantic-release-bot 634961bcaa chore(release): 1.0.0-beta.7 [skip ci]
# [1.0.0-beta.7](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2022-02-05)

### Bug Fixes

* **activitypub:** allow cors on get requests for routes exposing acitivitypub objects ([2f24809](2f2480998f))
* **fediverse:** set model instances as non shared to prevent overlapping ([91128fa](91128fad7a))
* **htaccess:** add ? after index.php in RewriteRule ([d9d139e](d9d139eefa)), closes [#152](https://code.podlibre.org/podlibre/castopod-host/issues/152)

### Features

* **home:** sort podcasts by recent activity + add dropdown menu to choose between sorting options ([7b89da6](7b89da6106)), closes [#164](https://code.podlibre.org/podlibre/castopod-host/issues/164)
2022-02-05 17:18:45 +00:00
semantic-release-bot 412cf14604 chore(release): 1.0.0-beta.6 [skip ci]
# [1.0.0-beta.6](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2022-02-03)

### Bug Fixes

* **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))
* **http-signature:** update SIGNATURE_PATTERN allowing signature keys to be sent in any order ([b7f285e](b7f285e4e2))
* **install:** set message block on forms to show error messages ([3a0a20d](3a0a20d59c)), closes [#157](https://code.podlibre.org/podlibre/castopod-host/issues/157)
* **markdown-editor:** remove unnecessary buttons for podcast and episode editors + add extensions ([9c4f60e](9c4f60e00b))
* **podcast-activity:** check if transcript and chapters are set before including them in audio ([5855a25](5855a25093))
* **podcast:** use markdown description value for editor + set prose class to about description ([f304d97](f304d97b14)), closes [#156](https://code.podlibre.org/podlibre/castopod-host/issues/156)
2022-02-03 14:39:13 +00:00
Yassine Doghri 9c4f60e00b fix(markdown-editor): remove unnecessary buttons for podcast and episode editors + add extensions
update CommonMark to v2 + add Autolink, SmartPunct and DisallowedRawHtml extensions
2022-02-03 14:12:47 +00:00
semantic-release-bot 7bc2d42c8e chore(release): 1.0.0-beta.5 [skip ci]
# [1.0.0-beta.5](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2022-01-31)

### Bug Fixes

* **analytics:** set initial value for duration and bandwidth ([ee50539](ee50539591))
2022-01-31 17:23:53 +00:00
semantic-release-bot 06279cd90f chore(release): 1.0.0-beta.4 [skip ci]
# [1.0.0-beta.4](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2022-01-29)

### Bug Fixes

* **housekeeping:** replace the use of GLOB_BRACE with looping over file extensions ([42d92d0](42d92d0c8d)), closes [#154](https://code.podlibre.org/podlibre/castopod-host/issues/154)
* **housekeeping:** set default sizes value + ignore illegal IFD size error to proceed with script ([f21ca57](f21ca57603))

### Features

* **housekeeping:** add clear_cache option to flush redis or files cache ([99bfac0](99bfac0b42))
2022-01-29 17:03:15 +00:00
semantic-release-bot 3bfcce3751 chore(release): 1.0.0-beta.3 [skip ci]
# [1.0.0-beta.3](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2022-01-28)

### Bug Fixes

* revert to beta.1's codeigniter4 version ([e831411](e831411270))
2022-01-28 18:13:40 +00:00
semantic-release-bot f80e820b1d chore(release): 1.0.0-beta.2 [skip ci]
# [1.0.0-beta.2](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2022-01-28)

### Bug Fixes

* **migrations:** ignore invalid utf8 chars for media files metadata + update transcript parser ([45e8f99](45e8f99e75))
* **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))
2022-01-28 15:26:24 +00:00
semantic-release-bot d807ab9732 chore(release): 1.0.0-beta.1 [skip ci]
# 1.0.0-beta.1 (2022-01-23)

### 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:** 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.podlibre.org/podlibre/castopod-host/issues/145)
* add category_label component to include parent category in about podcast page ([74e7d68](74e7d68ac8))
* add head request to analytics_hit route ([f0a2f0b](f0a2f0bea4))
* 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.podlibre.org/podlibre/castopod-host/issues/52)
* add translation key for audio-clipper trim labels ([db191ac](db191ac31b))
* add where condition to get episode count without deleted episodes ([7661734](7661734ed2)), closes [#67](https://code.podlibre.org/podlibre/castopod-host/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:** 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.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/issues/42) [#61](https://code.podlibre.org/podlibre/castopod-host/issues/61)
* **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))
* 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.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/issues/23)
* define podcast_id and platform_slug as foreign keys in podcasts_plaforms table ([6e9451a](6e9451a110))
* define podcastNamespaceLink value ([0d744d2](0d744d212d))
* **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.podlibre.org/podlibre/castopod-host/issues/5) [#86](https://code.podlibre.org/podlibre/castopod-host/issues/86)
* **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.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/issues/70)
* escape generated feed tag values and remove new lines from public pages meta description ([6238a43](6238a43863)), closes [#57](https://code.podlibre.org/podlibre/castopod-host/issues/57) [#46](https://code.podlibre.org/podlibre/castopod-host/issues/46)
* expire default query cache upon scheduled episode publication ([b72e7c8](b72e7c8691)), closes [#81](https://code.podlibre.org/podlibre/castopod-host/issues/81)
* fix layout bugs in admin and update translation files ([a834171](a83417180c)), closes [#40](https://code.podlibre.org/podlibre/castopod-host/issues/40)
* **follow:** add missing helpers to Actor controller ([ee53a73](ee53a732dc))
* handle HEAD requests on podcast_feed route ([74b2640](74b2640f2a)), closes [#79](https://code.podlibre.org/podlibre/castopod-host/issues/79)
* **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.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/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 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))
* **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.podlibre.org/podlibre/castopod-host/issues/53)
* **interact-as:** set actor_id instead of podcast id upon login event ([5dfade7](5dfade7cf3)), closes [#104](https://code.podlibre.org/podlibre/castopod-host/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))
* **md-editor:** build new markdown editor with lit + github/markdown-toolbar-element ([9ec1cb9](9ec1cb93da)), closes [#93](https://code.podlibre.org/podlibre/castopod-host/issues/93) [#94](https://code.podlibre.org/podlibre/castopod-host/issues/94) [#120](https://code.podlibre.org/podlibre/castopod-host/issues/120)
* minor corrections ([13be386](13be386842))
* move analytics to helper ([d311917](d31191732e))
* **multiselect:** add missing class names in choices options for purge to work properly ([719538d](719538d0cc))
* **open-graph:** replace non existant episode description to podcast description in podcast page ([b02584e](b02584ee60))
* **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.podlibre.org/podlibre/castopod-host/issues/125)
* **platforms:** display platform link only when visible is toggled on ([6e503c8](6e503c8d61)), closes [#39](https://code.podlibre.org/podlibre/castopod-host/issues/39)
* **podcast-import:** move guid attribute declaration for Episode entity to include slug data ([5d02ae3](5d02ae3990))
* **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 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 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.podlibre.org/podlibre/castopod-host/issues/125)
* 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.podlibre.org/podlibre/castopod-host/issues/60)
* rename podcast name to podcast handle to clarify field usage ([9dd4c77](9dd4c7741e)), closes [#126](https://code.podlibre.org/podlibre/castopod-host/issues/126)
* reorder fields as composite primary keys for analytics tables ([9660aa9](9660aa97c8))
* 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.podlibre.org/podlibre/castopod-host/issues/149) [#150](https://code.podlibre.org/podlibre/castopod-host/issues/150)
* replace website key for webpages in breadcrumb translate file ([50e32ff](50e32ff756))
* rewrite regenerate image function to use saveSizes method from Image entity ([3889912](38899124ec))
* **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.podlibre.org/podlibre/castopod-host/issues/148)
* **rss:** do not escape podcast and episode titles in the xml ([0dd3b7e](0dd3b7e0bf)), closes [#138](https://code.podlibre.org/podlibre/castopod-host/issues/138) [#71](https://code.podlibre.org/podlibre/castopod-host/issues/71)
* **rss:** set ❬itunes:author❭ tag to owner_name if publisher not specified ([2271c14](2271c1445b)), closes [#96](https://code.podlibre.org/podlibre/castopod-host/issues/96)
* **rss:** use originalPath instead of originalMediaPath in Image library ([b4012b7](b4012b7d2e))
* save transcript and chapters files to podcasts folder ([63f49c7](63f49c719f))
* 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.podlibre.org/podlibre/castopod-host/issues/64)
* set episode guid upon episode creation ([ad8b153](ad8b153f2a)), closes [#48](https://code.podlibre.org/podlibre/castopod-host/issues/48)
* set episode numbers during import + remove all custom form_helpers + minor ui issues ([99a3b8d](99a3b8d33e))
* set localized slug_field key as string in french language ([17fb29b](17fb29b209))
* set location to null when getting empty string ([71b1b5f](71b1b5f775))
* **settings:** add .jpg extension to site-icon file input to display all jpeg images ([f611a16](f611a16cd0))
* 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))
* unpublish episode before deleting it + add validation step before deletion ([f75bd76](f75bd76458)), closes [#112](https://code.podlibre.org/podlibre/castopod-host/issues/112) [#55](https://code.podlibre.org/podlibre/castopod-host/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 iso-369 language table seeder ([0c90db4](0c90db44c4))
* update MarkdownEditor component + restyle Button and other components ([b05d177](b05d177f1b))
* update purgecss content path for php helper files ([eb70bb4](eb70bb4f70)), closes [#59](https://code.podlibre.org/podlibre/castopod-host/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))
* **ux:** allow for empty message upon episode publication and warn user on submit ([33d01b8](33d01b8d4f)), closes [#129](https://code.podlibre.org/podlibre/castopod-host/issues/129)
* **ux:** redirect user to install page on database error in home page ([9017e30](9017e30bf4))
* **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:** tweak portrait parameters to have subtitles display without overflowing ([2385b1a](2385b1a292))
* **xml-editor:** escape xml editor's content + restyle form sections to prevent overflowing ([588590b](588590bd2c))

### Features

* **activitypub:** add Podcast actor and PodcastEpisode object with comments ([9e1e5d2](9e1e5d2e86))
* add alternate rss feed link tag to podcast page head ([a973c09](a973c097d5)), closes [#35](https://code.podlibre.org/podlibre/castopod-host/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 basic stats on podcast about page ([1670558](1670558473))
* add breadcrumb in admin area ([7fb1de2](7fb1de2cf3)), closes [#17](https://code.podlibre.org/podlibre/castopod-host/issues/17)
* add cache to ActivityPub sql queries + cache activity and note pages ([2d297f4](2d297f45b3))
* add CDN url ([972bcbf](972bcbf65e)), closes [#37](https://code.podlibre.org/podlibre/castopod-host/issues/37)
* add codemirror to display xml editor for custom rss field ([f15f262](f15f26240c))
* add cumulative listening time charts ([588b4d2](588b4d28da))
* 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.podlibre.org/podlibre/castopod-host/issues/2)
* 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.podlibre.org/podlibre/castopod-host/issues/131)
* 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 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.podlibre.org/podlibre/castopod-host/issues/41)
* add pages table to store custom instance pages (eg. legal-notice, cookie policy, etc.) ([9c224a8](9c224a8ac6)), closes [#24](https://code.podlibre.org/podlibre/castopod-host/issues/24)
* 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 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 user permissions and basic groups to handle authorizations ([d58e518](d58e51874a)), closes [#3](https://code.podlibre.org/podlibre/castopod-host/issues/3) [#18](https://code.podlibre.org/podlibre/castopod-host/issues/18)
* **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:** 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 service name from rss user-agent ([7202b98](7202b9867b))
* **analytics:** add weekday and hour bar charts ([8ab3132](8ab313296b))
* build hashed static files to renew browser cache ([37c54d2](37c54d2477)), closes [#107](https://code.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/issues/6)
* **custom-rss:** add custom xml tag injection in rss feed for ❬channel❭ and ❬item❭ ([6ecdaad](6ecdaad911))
* **devcontainer:** add devcontainer settings for dev environment ([69e7266](69e7266736))
* display castopod version in admin footer ([9f2574e](9f2574e6fb)), closes [#68](https://code.podlibre.org/podlibre/castopod-host/issues/68)
* display legal disclaimer and warning on podcast import page ([2f07992](2f07992e55)), closes [#34](https://code.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/issues/31) [#9](https://code.podlibre.org/podlibre/castopod-host/issues/9)
* enhance ui using javascript in admin area ([c0e66d5](c0e66d5f70))
* **episodes:** add create form and view pages for episode ([f3b2c8b](f3b2c8b84f)), closes [#1](https://code.podlibre.org/podlibre/castopod-host/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:** schedule episode with future publication_date by using cache expiration time ([4f1e773](4f1e773c0f)), closes [#47](https://code.podlibre.org/podlibre/castopod-host/issues/47)
* **fediverse:** implement activitypub protocols + update user interface ([2f525c0](2f525c0f6e)), closes [#69](https://code.podlibre.org/podlibre/castopod-host/issues/69) [#65](https://code.podlibre.org/podlibre/castopod-host/issues/65) [#85](https://code.podlibre.org/podlibre/castopod-host/issues/85) [#51](https://code.podlibre.org/podlibre/castopod-host/issues/51) [#91](https://code.podlibre.org/podlibre/castopod-host/issues/91) [#92](https://code.podlibre.org/podlibre/castopod-host/issues/92) [#88](https://code.podlibre.org/podlibre/castopod-host/issues/88)
* **fonts:** replace Montserrat with Inter for better readablity ([bfa11d0](bfa11d007d))
* import podcast from an rss feed url ([9a5d5a1](9a5d5a15b4)), closes [#21](https://code.podlibre.org/podlibre/castopod-host/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))
* **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:** update routes and redirect to podcast page ([12ce905](12ce905799))
* **podcast:** create a podcast using form ([1202ba3](1202ba3545))
* prefill season and episode numbers + set episode number as mandatory for serial podcasts ([07d740b](07d740b79f)), closes [#134](https://code.podlibre.org/podlibre/castopod-host/issues/134) [#136](https://code.podlibre.org/podlibre/castopod-host/issues/136)
* **public-ui:** adapt public podcast and episode pages to wireframes ([40a0535](40a0535fc1)), closes [#30](https://code.podlibre.org/podlibre/castopod-host/issues/30) [#13](https://code.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/issues/73) [#75](https://code.podlibre.org/podlibre/castopod-host/issues/75) [#76](https://code.podlibre.org/podlibre/castopod-host/issues/76) [#80](https://code.podlibre.org/podlibre/castopod-host/issues/80)
* **rss:** add podcast:comments tag to link to episode comments ([32e8c7c](32e8c7c16a))
* **rss:** add podcast:location tag ([c0a2282](c0a22829bd))
* **rss:** add soundbites according to the podcastindex specs ([6b34617](6b34617d07)), closes [#83](https://code.podlibre.org/podlibre/castopod-host/issues/83)
* **rss:** add transcript and chapters support ([e769d83](e769d83a93)), closes [#72](https://code.podlibre.org/podlibre/castopod-host/issues/72) [#82](https://code.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/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.podlibre.org/podlibre/castopod-host/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

* 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-01-23 20:23:27 +00:00
Yassine Doghri a2136849dd chore: run audit for npm + allow php-stan/extension-installer as a plugin in composer 2022-01-23 17:54:08 +00:00
Yassine Doghri 902f959b30 feat: add schema.org json-ld objects to podcasts, episodes, posts and comments pages
- refactor meta-tags by generating them in the controller and injecting them into the views
- use
`melbahja/seo` library to build opengraph and twitter meta-tags + schema.org objects
2021-12-29 12:06:13 +00:00
Yassine Doghri 5c56f3e6f0 feat(settings): add general config for instance (site name, description and icon) 2021-12-29 12:04:01 +00:00
Yassine Doghri a95de8bab0 feat(components): add custom view renderer with ComponentRenderer adapted from bonfire2
- update Component class structure and remove component helper function and ComponentLoader
- update residual activitypub naming to fediverse
2021-12-29 11:54:50 +00:00
Yassine Doghri 3ff1364906 chore: update php dependencies to latest 2021-12-29 11:54:20 +00:00
semantic-release-bot 3a0a76d705 chore(release): 1.0.0-alpha.80 [skip ci]
# [1.0.0-alpha.80](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.79...v1.0.0-alpha.80) (2021-12-29)

### Bug Fixes

* add application/octet-stream mimetype to mp3 and m4a extensions to prevent ext_in error ([339bef8](339bef878e)), closes [#145](https://code.podlibre.org/podlibre/castopod-host/issues/145)
2021-12-29 10:08:43 +00:00
semantic-release-bot ece476b388 chore(release): 1.0.0-alpha.79 [skip ci]
# [1.0.0-alpha.79](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.78...v1.0.0-alpha.79) (2021-12-20)

### Bug Fixes

* **import:** set episode and season numbers to null when not present in item tag ([3211398](3211398c78))
2021-12-20 16:42:51 +00:00
Yassine Doghri 3211398c78 fix(import): set episode and season numbers to null when not present in item tag
update getid3 to latest dev branch
2021-12-20 16:31:03 +00:00
semantic-release-bot 548234aa4d chore(release): 1.0.0-alpha.78 [skip ci]
# [1.0.0-alpha.78](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.77...v1.0.0-alpha.78) (2021-12-15)

### Bug Fixes

* **import:** add extension when downloading file without + truncate slug if too long ([c5f18bb](c5f18bb6dc))
2021-12-15 16:08:58 +00:00
semantic-release-bot d86315ed94 chore(release): 1.0.0-alpha.77 [skip ci]
# [1.0.0-alpha.77](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.76...v1.0.0-alpha.77) (2021-11-23)

### Bug Fixes

* **cors:** add preflight option routes for episode, podcast and status objects ([a281abf](a281abfda4))
* **podcast-import:** move guid attribute declaration for Episode entity to include slug data ([5d02ae3](5d02ae3990))
2021-11-23 11:03:31 +00:00
semantic-release-bot a09853ef14 chore(release): 1.0.0-alpha.76 [skip ci]
# [1.0.0-alpha.76](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.75...v1.0.0-alpha.76) (2021-10-26)

### Bug Fixes

* replace hardcoded style links with vite service + set default value for remote transcript url ([3f2e056](3f2e05608e)), closes [#149](https://code.podlibre.org/podlibre/castopod-host/issues/149) [#150](https://code.podlibre.org/podlibre/castopod-host/issues/150)
2021-10-26 10:40:11 +00:00
semantic-release-bot 84a0029c56 chore(release): 1.0.0-alpha.75 [skip ci]
# [1.0.0-alpha.75](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.74...v1.0.0-alpha.75) (2021-10-05)

### Bug Fixes

* **rss:** cast number type values to string in rss_helper ([7180ae9](7180ae9ec7)), closes [#148](https://code.podlibre.org/podlibre/castopod-host/issues/148)
2021-10-05 14:44:53 +00:00
semantic-release-bot 0f586152b0 chore(release): 1.0.0-alpha.74 [skip ci]
# [1.0.0-alpha.74](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.73...v1.0.0-alpha.74) (2021-09-28)

### Features

* **platforms:** add missing newpodcastapps.com's platforms ([92dd370](92dd370e2f))
2021-09-28 10:40:31 +00:00
semantic-release-bot 3c5d3f65bf chore(release): 1.0.0-alpha.73 [skip ci]
# [1.0.0-alpha.73](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.72...v1.0.0-alpha.73) (2021-09-22)

### Bug Fixes

* **map:** update episode markers query to discard unpublished episodes ([b3caac4](b3caac45b1))
2021-09-22 15:29:24 +00:00
semantic-release-bot 797e532727 chore(release): 1.0.0-alpha.72 [skip ci]
# [1.0.0-alpha.72](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.71...v1.0.0-alpha.72) (2021-09-20)

### Bug Fixes

* rename field status to task_status to get scheduled activities ([4ff82a5](4ff82a5f0a))
2021-09-20 10:00:58 +00:00
semantic-release-bot a78cacd3aa chore(release): 1.0.0-alpha.71 [skip ci]
# [1.0.0-alpha.71](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.70...v1.0.0-alpha.71) (2021-09-17)

### Features

* **map:** display geolocated episodes on a map page ([4357cc2](4357cc25cc))
2021-09-17 16:01:13 +00:00
semantic-release-bot 652fa3659e chore(release): 1.0.0-alpha.70 [skip ci]
# [1.0.0-alpha.70](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.69...v1.0.0-alpha.70) (2021-08-31)

### Bug Fixes

* **partner:** set correct image URL ([61554be](61554be12a))
2021-08-31 09:01:26 +00:00
semantic-release-bot 1d00a23866 chore(release): 1.0.0-alpha.69 [skip ci]
# [1.0.0-alpha.69](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.68...v1.0.0-alpha.69) (2021-08-23)

### Bug Fixes

* **import:** cast description's SimpleXMLElement to string ([02d17be](02d17be4ff))
2021-08-23 14:20:06 +00:00
semantic-release-bot 4e76266d50 chore(release): 1.0.0-alpha.68 [skip ci]
# [1.0.0-alpha.68](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.67...v1.0.0-alpha.68) (2021-08-19)

### Bug Fixes

* **analytics:** redirect to mp3 file even when referer was not set ([9fc388d](9fc388d154))
2021-08-19 14:37:51 +00:00
semantic-release-bot af7d625462 chore(release): 1.0.0-alpha.67 [skip ci]
# [1.0.0-alpha.67](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.66...v1.0.0-alpha.67) (2021-07-24)

### Features

* allow cross origin requests on episode comments ([e12f95a](e12f95aca1))
2021-07-24 17:01:10 +00:00
semantic-release-bot 797c96c1e6 chore(release): 1.0.0-alpha.66 [skip ci]
# [1.0.0-alpha.66](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.65...v1.0.0-alpha.66) (2021-07-24)

### Features

* **rss:** add podcast:comments tag to link to episode comments ([32e8c7c](32e8c7c16a))
2021-07-24 09:37:02 +00:00