Yassine Doghri
aa68386667
fix(audio-clipper): init segment position on firstUpdate + improve UX by adding ghost handle
...
- clean web components and js modules
- update js dependencies to latest
fixes #351
2023-07-01 13:46:03 +00:00
semantic-release-bot
d15a068e0c
chore(release): 1.4.3 [skip ci]
...
## [1.4.3](https://code.castopod.org/adaures/castopod/compare/v1.4.2...v1.4.3 ) (2023-06-29)
### Bug Fixes
* **video-clipper:** add -t option to ffmpeg command to stop generation after duration ([60814b8
](60814b8d20
)), closes [#341 ](https://code.castopod.org/adaures/castopod/issues/341 )
2023-06-29 15:39:37 +00:00
semantic-release-bot
3a5fdf2f54
chore(release): 1.4.2 [skip ci]
...
## [1.4.2](https://code.castopod.org/adaures/castopod/compare/v1.4.1...v1.4.2 ) (2023-06-27)
### Bug Fixes
* **fediverse:** check that actor's images mimetype is present or guess it otherwise ([06c4f15
](06c4f15477
)), closes [#348 ](https://code.castopod.org/adaures/castopod/issues/348 )
* **podcast-import:** show cancel or retry action depending on task status ([e42258d
](e42258de1f
))
2023-06-27 10:57:23 +00:00
Yassine Doghri
3fee88ae6e
chore: update js dependencies to latest
2023-06-23 10:01:40 +00:00
semantic-release-bot
b61dd57a37
chore(release): 1.4.1 [skip ci]
...
## [1.4.1](https://code.castopod.org/adaures/castopod/compare/v1.4.0...v1.4.1 ) (2023-06-22)
### Bug Fixes
* **podcast-import:** set default values for person group and role if not found in taxonomy ([aa46dca
](aa46dca4e3
))
2023-06-22 15:53:39 +00:00
semantic-release-bot
36f7de3783
chore(release): 1.4.0 [skip ci]
...
# [1.4.0](https://code.castopod.org/adaures/castopod/compare/v1.3.5...v1.4.0 ) (2023-06-21)
### Bug Fixes
* **charts:** set duration charts label to HHhMM for listening time analytics ([3fc1d8e
](3fc1d8e18d
))
* **embed:** set height of player iframe from config ([4665741
](4665741425
))
* **s3:** serve files without cache if dummy cache handler + add http referer header to redirect ([30db9f0
](30db9f0667
))
* **s3:** use presigned request uri to serve static files ([cb92dc7
](cb92dc73f1
))
* **webmanifest:** import misc helper to get site_icon_url ([548a11d
](548a11d501
))
### Features
* **import:** run podcast imports' processes asynchronously using tasks ([d8e1d40
](d8e1d4031d
))
* **rest-api:** add endpoints for episodes and full text search for podcasts and episodes ([85505d4
](85505d4b31
)), closes [#296 ](https://code.castopod.org/adaures/castopod/issues/296 )
2023-06-21 17:59:07 +00:00
Yassine Doghri
178bf998ab
chore: update php and js dependencies to latest
...
+ migrate phpunit config file to new format
2023-06-19 10:33:11 +00:00
Yassine Doghri
0de9c1ad23
chore: update js dependencies to latest
2023-06-12 16:04:58 +00:00
Yassine Doghri
2a50f6e4d2
style: update ecs config to align associative arrays arrows
...
update composer dependencies to latest
2023-06-12 15:12:49 +00:00
Yassine Doghri
1b50978559
chore: update js dependencies to latest
2023-06-05 12:08:32 +00:00
semantic-release-bot
6c010fc5fd
chore(release): 1.3.5 [skip ci]
...
## [1.3.5](https://code.castopod.org/adaures/castopod/compare/v1.3.4...v1.3.5 ) (2023-05-09)
### Bug Fixes
* replace essence with embera to create preview cards ([c682f03
](c682f03a67
))
2023-05-09 15:03:57 +00:00
semantic-release-bot
fbd1a0cf0d
chore(release): 1.3.4 [skip ci]
...
## [1.3.4](https://code.castopod.org/adaures/castopod/compare/v1.3.3...v1.3.4 ) (2023-05-05)
### Bug Fixes
* **import-update:** insert episodes incrementally into database ([108fdf8
](108fdf84b8
))
2023-05-05 17:17:28 +00:00
semantic-release-bot
fb9b6ec54d
chore(release): 1.3.3 [skip ci]
...
## [1.3.3](https://code.castopod.org/adaures/castopod/compare/v1.3.2...v1.3.3 ) (2023-04-17)
### Bug Fixes
* unnescape podcast title special characters in "find us on" section ([f727276
](f727276f82
)), closes [#323 ](https://code.castopod.org/adaures/castopod/issues/323 )
* **websub:** add missing misc helper import ([855aacc
](855aacce0b
))
2023-04-17 12:29:21 +00:00
semantic-release-bot
19fcb9b0f3
chore(release): 1.3.2 [skip ci]
...
## [1.3.2](https://code.castopod.org/adaures/castopod/compare/v1.3.1...v1.3.2 ) (2023-04-14)
### Bug Fixes
* remove path key when getting default avatar path ([c5a1359
](c5a1359218
))
* **s3:** serve files using media base url to allow for CDN setup ([502f53c
](502f53c970
))
2023-04-14 12:27:04 +00:00
Yassine Doghri
a00e45ea4c
build: update js and php dependencies to latest
2023-04-14 11:22:12 +00:00
semantic-release-bot
dfae166e4d
chore(release): 1.3.1 [skip ci]
...
## [1.3.1](https://code.castopod.org/adaures/castopod/compare/v1.3.0...v1.3.1 ) (2023-04-13)
### Bug Fixes
* **s3:** add proxy to serve images from s3 to client ([a76724a
](a76724a8cf
)), closes [#321 ](https://code.castopod.org/adaures/castopod/issues/321 )
2023-04-13 12:06:09 +00:00
semantic-release-bot
c5eb6ed590
chore(release): 1.3.0 [skip ci]
...
# [1.3.0](https://code.castopod.org/adaures/castopod/compare/v1.2.4...v1.3.0 ) (2023-04-03)
### Bug Fixes
* delete files using file_manager when deleting episode and podcast ([41d8efe
](41d8efe6e7
))
### Features
* **media:** set media storage directory as configurable ([7e1a470
](7e1a470ba4
))
2023-04-03 15:07:06 +00:00
semantic-release-bot
4503b05a8a
chore(release): 1.2.4 [skip ci]
...
## [1.2.4](https://code.castopod.org/adaures/castopod/compare/v1.2.3...v1.2.4 ) (2023-03-23)
### Bug Fixes
* allow images to have .jpeg extension consistently ([ae5e12b
](ae5e12be3b
))
* **s3:** delete persons image sizes from bucket + add keyPrefix to config ([208c271
](208c2715f9
))
* **s3:** do not create bucket if not exists, check if healthy instead ([da7076f
](da7076fc2d
))
### Reverts
* **homepage:** remove redirect to install if database is not setup ([d4954e0
](d4954e026d
))
2023-03-23 12:48:05 +00:00
Yassine Doghri
da7076fc2d
fix(s3): do not create bucket if not exists, check if healthy instead
...
update php and js dependencies to latest
2023-03-23 11:46:21 +00:00
semantic-release-bot
0a54b413b3
chore(release): 1.2.3 [skip ci]
...
## [1.2.3](https://code.castopod.org/adaures/castopod/compare/v1.2.2...v1.2.3 ) (2023-03-18)
### Bug Fixes
* **notifications:** set mark-all-as-read parameter to be podcast_id instead of actor_id ([2748f23
](2748f23137
))
2023-03-18 12:41:10 +00:00
semantic-release-bot
496c89a7e9
chore(release): 1.2.2 [skip ci]
...
## [1.2.2](https://code.castopod.org/adaures/castopod/compare/v1.2.1...v1.2.2 ) (2023-03-18)
### Bug Fixes
* **migration:** change old media file_key to file_path ([a414142
](a4141421aa
)), closes [#314 ](https://code.castopod.org/adaures/castopod/issues/314 )
2023-03-18 10:23:39 +00:00
semantic-release-bot
08acfd593c
chore(release): 1.2.1 [skip ci]
...
## [1.2.1](https://code.castopod.org/adaures/castopod/compare/v1.2.0...v1.2.1 ) (2023-03-17)
### Bug Fixes
* change app.mediaBaseURL to media.baseURL in install, docker entrypoints and docs ([b3c6e05
](b3c6e05e6f
))
2023-03-17 17:46:20 +00:00
semantic-release-bot
0cb2e99f03
chore(release): 1.2.0 [skip ci]
...
# [1.2.0](https://code.castopod.org/adaures/castopod/compare/v1.1.2...v1.2.0 ) (2023-03-17)
### Bug Fixes
* **analytics:** check the x_forwarded_for client header ([1111177
](1111177eb7
))
* **auth:** update podcast editors' permissions ([a9b6308
](a9b630884b
))
* **contributors:** add dash to prevent deleting permissions from other podcast ([5d2a2d4
](5d2a2d49c4
)), closes [#310 ](https://code.castopod.org/adaures/castopod/issues/310 )
* display bandwidth limit on dashboard when set in .env ([a2a87ab
](a2a87abf7c
))
* **docker:** update nginx configuration ([8884598
](8884598a56
))
* **platforms:** update 'submit_url' for Antennapod ([9fc49a7
](9fc49a7430
))
### Features
* add downloads count to episode list ([b63c1dc
](b63c1dc9b1
))
* add health route to check if db, cache and file manager are ok ([1dde11f
](1dde11f8e4
))
* **media:** add s3 to manage media files ([d93fc98
](d93fc98469
))
### Reverts
* **install:** reset condition to look for instance owner before continuing install ([fc009f3
](fc009f3d00
))
2023-03-17 17:21:02 +00:00
Yassine Doghri
d93fc98469
feat(media): add s3 to manage media files
...
Users may choose between filesystem (FS) or S3 to store and manage their media files
2023-03-16 13:00:05 +00:00
Yassine Doghri
34777598dd
build: replace npm with pnpm + add Dockerfile for ci
...
update php and js dependencies to latest
2023-02-22 14:36:56 +00:00
semantic-release-bot
fa6bb2f492
chore(release): 1.1.2 [skip ci]
...
## [1.1.2](https://code.castopod.org/adaures/castopod/compare/v1.1.1...v1.1.2 ) (2022-12-14)
### Bug Fixes
* **analytics:** set EpisodeAudioController to init user session data ([77ccb30
](77ccb30600
))
2022-12-14 11:43:27 +00:00
semantic-release-bot
998a8ee6b4
chore(release): 1.1.1 [skip ci]
...
## [1.1.1](https://code.castopod.org/adaures/castopod/compare/v1.1.0...v1.1.1 ) (2022-12-13)
### Bug Fixes
* **op3:** remove scheme when wraping audio URI ([0ad22e4
](0ad22e49bc
))
* **rss:** add file extension to enclosure url ([964cbba
](964cbba54f
))
2022-12-13 12:17:45 +00:00
semantic-release-bot
948a3db48a
chore(release): 1.1.0 [skip ci]
...
# [1.1.0](https://code.castopod.org/adaures/castopod/compare/v1.0.5...v1.1.0 ) (2022-12-09)
### Bug Fixes
* **notifications:** remove cache inconsistencies when marking notification as read ([46d7054
](46d70541d3
))
* **notifications:** retrieve activity from database instead of getting cache ([7fbbd08
](7fbbd08da6
))
* **podcast:soundbite:** rename start time attribute to follow spec ([689831c
](689831c26c
))
### Features
* **analytics:** add OP3 analytics service option + update episode audio url ([16527ed
](16527ed529
))
2022-12-09 17:19:37 +00:00
semantic-release-bot
6e4045bb0d
chore(release): 1.0.5 [skip ci]
...
## [1.0.5](https://code.castopod.org/adaures/castopod/compare/v1.0.4...v1.0.5 ) (2022-11-25)
### Bug Fixes
* **router:** revert to CI4 v4.2.7 to include all routes ([c13cfa0
](c13cfa0ea0
))
2022-11-25 18:16:22 +00:00
semantic-release-bot
07d5ab5af7
chore(release): 1.0.4 [skip ci]
...
## [1.0.4](https://code.castopod.org/adaures/castopod/compare/v1.0.3...v1.0.4 ) (2022-11-21)
### Bug Fixes
* update actorUsername regex to get url_to actor ([1d6b177
](1d6b177a55
))
2022-11-21 14:25:08 +00:00
semantic-release-bot
f867ab6a61
chore(release): 1.0.3 [skip ci]
...
## [1.0.3](https://code.castopod.org/adaures/castopod/compare/v1.0.2...v1.0.3 ) (2022-11-17)
### Bug Fixes
* **dashboard-ui:** fill the blank gaps between cards on smaller screen sizes ([00836cc
](00836cc368
))
2022-11-17 15:30:13 +00:00
semantic-release-bot
7ba5f15839
chore(release): 1.0.2 [skip ci]
...
## [1.0.2](https://code.castopod.org/adaures/castopod/compare/v1.0.1...v1.0.2 ) (2022-11-04)
### Bug Fixes
* **auth:** disallow registration by default ([379b9be
](379b9be2b9
))
* **contributors:** add prefix to podcast group to delete contributor ([9f785db
](9f785db7ba
))
* extract podcast ids from user groups using a regex ([e26215a
](e26215a11f
))
* **notifications:** add manage-notifications permission to podcast ([ed7c247
](ed7c247bcb
))
* **platforms:** convert special characters to htmlentities to validate url ([82310a2
](82310a2e0b
))
2022-11-04 11:24:09 +00:00
semantic-release-bot
a6395b5ce0
chore(release): 1.0.1 [skip ci]
...
## [1.0.1](https://code.castopod.org/adaures/castopod/compare/v1.0.0...v1.0.1 ) (2022-11-01)
### Bug Fixes
* **platforms:** trim platform url before validation and storage ([259fe5f
](259fe5f697
))
2022-11-01 18:10:12 +00:00
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
Yassine Doghri
3a57538572
build: set minimal php version to 8.1
...
closes #225
2022-10-17 14:17:50 +00:00
semantic-release-bot
c760acc79d
chore(release): 1.0.0-beta.24 [skip ci]
...
# [1.0.0-beta.24](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.23...v1.0.0-beta.24 ) (2022-10-14)
### Bug Fixes
* **router:** trim URI slash to match same routes for URIs with and without trailing slash ([9e9375f
](9e9375f9a2
))
### Features
* **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 )
* **rss:** add rss feed route without the `.xml` extension ([94c0b7c
](94c0b7c159
)), closes [#247 ](https://code.castopod.org/adaures/castopod/issues/247 )
2022-10-14 16:32:44 +00:00
Yassine Doghri
a182d96f18
chore: update CI4 to v4.2.7 + dependencies to latest
2022-10-14 14:56:30 +00:00
semantic-release-bot
104438ec5f
chore(release): 1.0.0-beta.23 [skip ci]
...
# [1.0.0-beta.23](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.22...v1.0.0-beta.23 ) (2022-09-29)
### Bug Fixes
* **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
))
### Features
* add instructions on production error page to ease Castopod debugging process ([9eab54e
](9eab54e085
)), closes [#224 ](https://code.castopod.org/adaures/castopod/issues/224 )
* add premium podcasts to manage subscriptions for premium episodes ([3234500
](3234500e2d
)), closes [#193 ](https://code.castopod.org/adaures/castopod/issues/193 )
* **gdpr:** add purpose for granting access to premium content ([47d6d81
](47d6d81b79
))
2022-09-29 14:40:00 +00:00
Yassine Doghri
9eab54e085
feat: add instructions on production error page to ease Castopod debugging process
...
closes #224
2022-09-28 12:49:36 +00:00
semantic-release-bot
eabe3f3b97
chore(release): 1.0.0-beta.22 [skip ci]
...
# [1.0.0-beta.22](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.21...v1.0.0-beta.22 ) (2022-09-23)
### Bug Fixes
* **fediverse:** set default castopod avatar url when actor avatar is not present ([460f52f
](460f52f70e
))
* **import:** set default episode type if not set ([d7250ab
](d7250ab03f
))
* **input-component:** unset required attribute to prevent rendering it when false ([db9ac13
](db9ac13860
))
* **notifications:** notify actors after activities insert / update using model callback methods ([e08555a
](e08555a4e9
))
* overwrite getActorById to return app's Actor entity ([f2bc2f7
](f2bc2f7e01
))
* remove heavy image cover data from audio file metadata ([f74403b
](f74403bd7a
))
* set storage limit as disk_total_space instead of free space ([7512e2e
](7512e2ed1f
))
* **ui:** remove empty tooltip when hovering on sponsor button ([40aa661
](40aa661289
))
* **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:** have podcast dashboard card link to podcast dashboard if only one podcast in instance ([7dabee5
](7dabee58a1
))
2022-09-23 16:20:14 +00:00
semantic-release-bot
3bb7572abb
chore(release): 1.0.0-beta.21 [skip ci]
...
# [1.0.0-beta.21](https://code.castopod.org/adaures/castopod/compare/v1.0.0-beta.20...v1.0.0-beta.21 ) (2022-09-06)
### Bug Fixes
* **email:** set the correct url in the activation and forgot emails ([10fc6f1
](10fc6f17c6
)), closes [#204 ](https://code.castopod.org/adaures/castopod/issues/204 )
* **notifications:** add trigger after activities update + update insert trigger ([e5d16e8
](e5d16e8711
))
### Features
* **i18n:** add support for Simplified Chinese (zh-Hans) and Catalan (ca) locales ([48d1443
](48d1443472
))
2022-09-06 15:49:52 +00:00
Yassine Doghri
f3c1ddb3b1
chore: update CI4 to 4.2.6 + composer and npm dependencies to latest
2022-09-06 12:25:43 +00:00
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
Yassine Doghri
e07d3afea9
fix(player-styling): revert vite to 2.8 to reference the player css
...
A bug in the latest vite release (v2.9.13) prevents the player styling
from being referenced in the manifest.
2022-07-07 17:19:02 +00:00
Yassine Doghri
8cbc902a75
docs(contributions): recognize any kind of contribution with all-contributors spec ✨
...
- add contributors list to readme and docs' index page
- add CONTRIBUTING.md file redirecting to docs website
- add "translate castopod" section to guidelines
2022-07-07 16:41:34 +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