343 Commits

Author SHA1 Message Date
Yassine Doghri
b51a5b4ead feat: set min PHP version to 8.4
update CI4 to 4.6.0 + use codeigniter-vite and vite-plugin-codeigniter to load assets
2025-03-01 13:16:05 +00:00
semantic-release-bot
c9fabe8888 chore(release): 2.0.0-next.3 [skip ci]
## [2.0.0-next.3](https://code.castopod.org/adaures/castopod/compare/v2.0.0-next.2...v2.0.0-next.3) (2024-12-30)

### Features

* **api:** add Episode create and publish endpoints ([a90cdfd](a90cdfdcdb))
* **image:** add image size's width and height ([f50098e](f50098ec89))
* **plugins:** add defaultValue for all field types ([d3a98db](d3a98db6d0))
* **plugins:** add group field type + multiple option to render field arrays ([11ccd0e](11ccd0ebe7))
* **plugins:** add html field type + CodeEditor component + rework html head generation ([8cf9c6d](8cf9c6dc83))
* **rss:** add option for 301 redirect to new feed url ([8402cc2](8402cc29d2))

### Bug Fixes

* add downloads_count to episodes table, computed every hour ([f981937](f981937645))
* allow passing json to app.proxyIPs config to set it ([cbf739e](cbf739e95c))
* **api:** cast integers when creating episode ([775b302](775b302f7c))
* **docker-image:** clear cache to account for new assets and data structure changes ([63c763f](63c763f941)), closes [#510](https://code.castopod.org/adaures/castopod/issues/510)
* edit remap functions to get episode in episode admin controllers ([9f74cca](9f74cca342))
* **episode:** do not change slug when editing episode title ([a83afb0](a83afb0004)), closes [#513](https://code.castopod.org/adaures/castopod/issues/513)
* **fediverse:** add "processing" and "failed" statuses to better manage broadcast load ([1d7583d](1d7583d738)), closes [#511](https://code.castopod.org/adaures/castopod/issues/511)
* **icons:** set correct names for lock and lock-unlock icons in premium banner ([37ee6d3](37ee6d35b4))
* **plugins:** clear cache after activating or deactivating plugin ([08c7df2](08c7df2a5d))
* **plugins:** delete relevant cache when submitting settings ([00bd4c0](00bd4c02ee))
* **podcast-model:** always query podcast from database when clearing cache ([d30c49c](d30c49cdff))
* **premium-podcasts:** update query to validate subscription ([2b1bbf3](2b1bbf3430))
* **preview:** delete episode preview cache after editing episode ([732d429](732d42923d)), closes [#514](https://code.castopod.org/adaures/castopod/issues/514)
* **release:** add conventional-changelog-conventionalcommits for CHANGELOG generation ([6934c8a](6934c8aa8f))
* **rss:** add subscription id to cache name to prevent premium feeds from overlapping ([74f9325](74f9325946))
* set user as www-data when running cron jobs in docker's supervisord config ([65d74f1](65d74f14e6))
* typo in EpisodeController remap function to get episode ([f288a75](f288a750f5))
* update select and multi-select options to value/label arrays ([63f93f5](63f93f585b))

### Internal

* **plugins:** create Field objects per field type in settings forms + handle rendering in class ([34be5bc](34be5bccab))
* remove fields from podcast and episode entities to be replaced with plugins ([b869acb](b869acb3a9))
* rename controller methods for views and actions to be more consistent ([85704bf](85704bfbe0))
* update CodeIgniter to v4.5.6 ([f295e9a](f295e9aa4c))
* update codigniter-icons to v1.0.1 ([fa6967e](fa6967e65c))
* update js dependencies to latest ([70c9797](70c97971fc))
2024-12-30 12:31:21 +00:00
Yassine Doghri
f295e9aa4c chore: update CodeIgniter to v4.5.6
+ update php dependencies to latest
2024-12-29 16:02:08 +00:00
Yassine Doghri
f981937645 fix: add downloads_count to episodes table, computed every hour
This removes computing latency when retrieving episodes list with download count in admin.
The more
analytics records, the more it took to calculate the sum of hits to get the downloads count for each
episode.
2024-12-29 13:24:42 +00:00
Nate Ritter
a90cdfdcdb feat(api): add Episode create and publish endpoints 2024-12-25 11:22:29 +00:00
Yassine Doghri
85704bfbe0 refactor: rename controller methods for views and actions to be more consistent
add PermalinkEditor component
2024-12-18 16:05:25 +00:00
Yassine Doghri
8cf9c6dc83 feat(plugins): add html field type + CodeEditor component + rework html head generation
update php and js packages to latest
2024-12-17 15:11:45 +00:00
Yassine Doghri
f50098ec89 feat(image): add image size's width and height
escape plugin description + replace codeigniter-icons with php-icons v1.2
2024-11-07 12:56:46 +00:00
Yassine Doghri
cbf739e95c fix: allow passing json to app.proxyIPs config to set it 2024-11-06 13:19:59 +00:00
Yassine Doghri
1667f5b202 build: update CI4 to v4.5.5 + php and js packages to latest 2024-11-06 13:19:59 +00:00
semantic-release-bot
3cd30205d9 chore(release): 2.0.0-next.2 [skip ci]
# [2.0.0-next.2](https://code.castopod.org/adaures/castopod/compare/v2.0.0-next.1...v2.0.0-next.2) (2024-07-08)

### Bug Fixes

* **audio-player:** set player icons to default instead of missing Castopod's ([0ba0a25](0ba0a25b11))
* broken icon call in frontend default pages template ([3228362](322836254e))
* **manifest:** set repository url as required in docstring typings ([a8c81b3](a8c81b3fa1))
* set correct icons parameters in map and funding links views ([5d35524](5d35524875)), closes [#500](https://code.castopod.org/adaures/castopod/issues/500)

### Features

* **plugins:** add `minCastopodVersion` to denote incompatibility with previous Castopod versions ([fc9ea75](fc9ea7597e))
* **plugins:** load and display LICENSE.md file if found in plugin's directory ([fee7905](fee7905935))
2024-07-08 16:12:36 +00:00
Yassine Doghri
1a439083a2 docs: fix typo in comments in auth file 2024-07-04 15:54:17 +00:00
Yassine Doghri
e9c04548de build: update CI to 4.5.3 + php and js dependencies to latest 2024-07-04 13:27:10 +00:00
semantic-release-bot
0eeedb9dc6 chore(release): 2.0.0-next.1 [skip ci]
# [2.0.0-next.1](https://code.castopod.org/adaures/castopod/compare/v1.11.0...v2.0.0-next.1) (6/19/2024)

### Bug Fixes

* add missing php-icons config file to bundle ([56612f0](56612f0c76))
* **docs:** add base to og image using env variable ([fe67659](fe676590f2))
* **import:** rewrite download_file helper to output curl response directly to file ([eb7ad2f](eb7ad2f7e1))
* include app/Resources/icons folder to bundle ([3fd5efc](3fd5efc795))
* **platforms:** add platforms service + reduce memory consumption when rendering platform cards ([fe73e9f](fe73e9fae9))
* set owner email visibility when editing podcast ([fc4f982](fc4f982556)), closes [#473](https://code.castopod.org/adaures/castopod/issues/473)

### Build System

* release next major version as prerelease ([8275226](827522643e))

### Features

* add Plugins module with base files for plugins architecture ([7253e13](7253e13ac2))
* **plugins:** abstract settings form for general, podcast and episode types ([b62b483](b62b483ad9))
* **plugins:** activate / deactivate plugin using settings table ([27d2a1b](27d2a1b0ff))
* **plugins:** add aside with plugin metadata next to plugin's readme ([dfb7888](dfb7888aeb))
* **plugins:** add before channel/item hooks to allow podcast/episode data edit when generating rss ([80d2c48](80d2c48ee2))
* **plugins:** add json schema definition for plugin manifest ([b5eddf3](b5eddf351f))
* **plugins:** add methods to easily retrieve general, podcast and episode settings in hooks methods ([3a900bb](3a900bbab6))
* **plugins:** add new field types + validate & cast user data before storing settings ([6f833fc](6f833fc76a))
* **plugins:** add options to manifest for building forms and storing plugin settings ([3d8aedf](3d8aedf9c3))
* **plugins:** add settings page for podcast and episode if defined in the plugin's manifest ([89ac92f](89ac92fb41))
* **plugins:** add siteHead hook to add custom meta tags to public pages ([e80a33b](e80a33bf2a))
* **plugins:** display errors when plugin is invalid instead of crashing ([8ec7909](8ec79097bb))
* **plugins:** handle empty states and long strings in UI ([45ac2a4](45ac2a4be9))
* **plugins:** load and validate plugin manifest.json ([1510e36](1510e36c0a))
* **plugins:** load plugins using file locator service ([587938d](587938d2bf))
* **plugins:** load README.md file to view plugin's instructions in UI ([e6bfdfc](e6bfdfc390))
* **plugins:** register plugins using Plugin.php file instead of namespace + simplify i18n structure ([2035c39](2035c39fd1))
* **plugins:** uninstall plugins via CLI and admin UI ([9a80de4](9a80de4068))
* set owner email to hidden by default in podcast create form ([7a6d9df](7a6d9df6db))
* support podcast:txt tag with verify use case ([57e459e](57e459e187)), closes [#468](https://code.castopod.org/adaures/castopod/issues/468)

### BREAKING CHANGES

* next major release including plugins architecture
2024-06-19 10:12:35 +00:00
Yassine Doghri
2035c39fd1 feat(plugins): register plugins using Plugin.php file instead of namespace + simplify i18n structure 2024-06-14 15:53:33 +00:00
Yassine Doghri
b62b483ad9 feat(plugins): abstract settings form for general, podcast and episode types
update filter permission logic for replacing router param
2024-06-14 15:53:33 +00:00
Yassine Doghri
1510e36c0a feat(plugins): load and validate plugin manifest.json 2024-06-14 15:53:32 +00:00
Yassine Doghri
896f00661f refactor(plugins): redefine plugins folder structure to vendor/package 2024-06-14 15:53:32 +00:00
Yassine Doghri
9a80de4068 feat(plugins): uninstall plugins via CLI and admin UI 2024-06-14 15:53:32 +00:00
Yassine Doghri
89ac92fb41 feat(plugins): add settings page for podcast and episode if defined in the plugin's manifest
- rename options to settings
2024-06-14 15:53:32 +00:00
Yassine Doghri
3d8aedf9c3 feat(plugins): add options to manifest for building forms and storing plugin settings 2024-06-14 15:53:32 +00:00
Yassine Doghri
e80a33bf2a feat(plugins): add siteHead hook to add custom meta tags to public pages 2024-06-14 15:53:32 +00:00
Yassine Doghri
27d2a1b0ff feat(plugins): activate / deactivate plugin using settings table
+ load plugin icon
+ add pagination
+ autoload plugins in Config/Autoload.php to handle plugin
i18n
+ style plugin cards
2024-06-14 15:53:32 +00:00
Yassine Doghri
7253e13ac2 feat: add Plugins module with base files for plugins architecture 2024-06-14 15:53:32 +00:00
Yassine Doghri
d88b041d2c docs: change vitepress with astro's starlight
- change language keys to kebab-case
- add new languages to docs: ca, de, es, sr-latn, zh-hans
2024-05-21 16:07:56 +00:00
Yassine Doghri
bb628f355f refactor: add modules folder to phpstan paths + fix errors 2024-04-28 16:41:24 +00:00
Yassine Doghri
51b064d67a refactor(icons): use php-icons library to load and display icons 2024-04-26 17:57:25 +00:00
Yassine Doghri
d4a36f811b chore: update CodeIgniter to 4.5.1 + other dependencies to latest 2024-04-26 09:26:22 +00:00
Yassine Doghri
303a900f66 refactor(platforms): move platforms data in code instead of database
refs #457
2024-04-24 14:47:05 +00:00
semantic-release-bot
30a56546d3 chore(release): 1.11.0 [skip ci]
# [1.11.0](https://code.castopod.org/adaures/castopod/compare/v1.10.5...v1.11.0) (4/17/2024)

### Bug Fixes

* **premium:** set itunes:block on premium feeds to prevent indexing ([88851b0](88851b0226))
* **rss:** generate podcast guid if empty ([a5aef2a](a5aef2a63e)), closes [#450](https://code.castopod.org/adaures/castopod/issues/450)

### Features

* add trailer tags to rss if trailer episodes are present ([80fdd9c](80fdd9cfb4))
* add transcript display to episode page ([4d141fc](4d141fceae)), closes [#411](https://code.castopod.org/adaures/castopod/issues/411)
* **platforms:** add telegram to socials ([004f804](004f804045))
* **platforms:** add truefans.fm and episodes.fm ([d046ecc](d046ecc52f)), closes [#458](https://code.castopod.org/adaures/castopod/issues/458) [#459](https://code.castopod.org/adaures/castopod/issues/459)
2024-04-17 11:05:38 +00:00
Guy Martin (Dwev)
4d141fceae feat: add transcript display to episode page
+ fix transcript parser

closes #411
2024-04-17 09:13:07 +00:00
semantic-release-bot
9d7d11cefa chore(release): 1.10.5 [skip ci]
## [1.10.5](https://code.castopod.org/adaures/castopod/compare/v1.10.4...v1.10.5) (3/12/2024)

### Bug Fixes

* **file-uploads:** validate chapters json content + remove permit_empty rule to uploaded files ([6289c42](6289c42b11)), closes [#445](https://code.castopod.org/adaures/castopod/issues/445)
2024-03-12 11:28:38 +00:00
Yassine Doghri
c24850bda9 build(i18n): include Breton and Serbian (Latin) languages to Castopod bundle 2024-03-12 09:32:22 +00:00
Yassine Doghri
6289c42b11 fix(file-uploads): validate chapters json content + remove permit_empty rule to uploaded files
refs #445
2024-03-12 09:32:22 +00:00
semantic-release-bot
37f2d2d21a chore(release): 1.10.4 [skip ci]
## [1.10.4](https://code.castopod.org/adaures/castopod/compare/v1.10.3...v1.10.4) (2/26/2024)

### Bug Fixes

* display chapters in episode preview page ([797516a](797516a2ec)), closes [#445](https://code.castopod.org/adaures/castopod/issues/445)
2024-02-26 12:11:00 +00:00
semantic-release-bot
efa5acd415 chore(release): 1.10.3 [skip ci]
## [1.10.3](https://code.castopod.org/adaures/castopod/compare/v1.10.2...v1.10.3) (2/21/2024)

### Bug Fixes

* **chapters:** use episode cover when chapter img is an empty string ([a343de4](a343de4cf6)), closes [#444](https://code.castopod.org/adaures/castopod/issues/444)
* **import:** set episodes as premium if podcast is set as premium by default ([dfd66be](dfd66beebf))
2024-02-21 15:16:02 +00:00
semantic-release-bot
6c3dee2131 chore(release): 1.10.2 [skip ci]
## [1.10.2](https://code.castopod.org/adaures/castopod/compare/v1.10.1...v1.10.2) (2/20/2024)

### Bug Fixes

* **podcast-import:** move closing parenthasis when checking for owner name and email existence ([cec7815](cec78155f9))
2024-02-20 15:35:03 +00:00
semantic-release-bot
867dfad9ae chore(release): 1.10.1 [skip ci]
## [1.10.1](https://code.castopod.org/adaures/castopod/compare/v1.10.0...v1.10.1) (2/20/2024)

### Bug Fixes

* **fediverse:** use config name to get Fediverse config properties instead of hardcoded class string ([5fd0980](5fd0980ff7))
2024-02-20 10:36:40 +00:00
semantic-release-bot
80c114287f chore(release): 1.10.0 [skip ci]
# [1.10.0](https://code.castopod.org/adaures/castopod/compare/v1.9.0...v1.10.0) (2/19/2024)

### Bug Fixes

* **op3:** move op3 prefix to enclosure url instead of audio proxy ([d580369](d580369235))
* **podcast-import:** rollback transaction before exception is thrown ([419bb04](419bb04716)), closes [#429](https://code.castopod.org/adaures/castopod/issues/429) [#319](https://code.castopod.org/adaures/castopod/issues/319) [#443](https://code.castopod.org/adaures/castopod/issues/443) [#438](https://code.castopod.org/adaures/castopod/issues/438)

### Features

* add podcast:season and podcast:episode tags to rss feed ([98c6658](98c6658840))
* add support for podcasting 2.0 "medium" tag with podcast, music and audiobook ([630e788](630e788f0e)), closes [#439](https://code.castopod.org/adaures/castopod/issues/439)
* display chapters in episode's public page ([87cc437](87cc437e1e)), closes [#423](https://code.castopod.org/adaures/castopod/issues/423)
* support VTT transcript file format in addition to SRT ([7071b4b](7071b4b6f4)), closes [#433](https://code.castopod.org/adaures/castopod/issues/433)
2024-02-19 12:35:11 +00:00
Guy Martin
87cc437e1e feat: display chapters in episode's public page
closes #423
2024-02-17 12:02:38 +00:00
Yassine Doghri
94ceba6081 chore(media): remove media Routes file from Routing config 2024-02-12 13:23:30 +00:00
semantic-release-bot
bc4f93d2b7 chore(release): 1.9.0 [skip ci]
# [1.9.0](https://code.castopod.org/adaures/castopod/compare/v1.8.2...v1.9.0) (1/31/2024)

### Bug Fixes

* **i18n:** escape language strings in form fields to prevent them from disappearing ([3cb5ffd](3cb5ffd25b)), closes [#412](https://code.castopod.org/adaures/castopod/issues/412)
* **podcast-about:** update stats query to discard scheduled episodes from episodes number ([67c037c](67c037c9eb))
* **premium-subs:** clear subscription list cache after insert ([2accb0f](2accb0f765)), closes [#430](https://code.castopod.org/adaures/castopod/issues/430)
* **s3:** remove proxy, set objects acl to public-read, and serve files using their public urls ([6a77a9d](6a77a9d2f2))

### Features

* add actor domain to handle in follow page ([de099ac](de099ac643))
* **admin:** add podcast's OP3 analytics dashboard link ([5f3752b](5f3752b443))
2024-01-31 10:00:05 +00:00
semantic-release-bot
a12327da8e chore(release): 1.8.2 [skip ci]
## [1.8.2](https://code.castopod.org/adaures/castopod/compare/v1.8.1...v1.8.2) (1/17/2024)

### Bug Fixes

* **transcript:** add condition when concatenating sub text to prevent second line duplication ([6cbfec0](6cbfec0d7d))
2024-01-17 10:16:14 +00:00
semantic-release-bot
28a31ca03b chore(release): 1.8.1 [skip ci]
## [1.8.1](https://code.castopod.org/adaures/castopod/compare/v1.8.0...v1.8.1) (1/16/2024)

### Bug Fixes

* **models:** set updatedField as empty string when not used ([164f4d3](164f4d3be7))
2024-01-16 10:07:25 +00:00
semantic-release-bot
9899870e28 chore(release): 1.8.0 [skip ci]
# [1.8.0](https://code.castopod.org/adaures/castopod/compare/v1.7.4...v1.8.0) (1/15/2024)

### Bug Fixes

* **episode-form:** add required validation rules for title and slug ([30a3473](30a3473863)), closes [#420](https://code.castopod.org/adaures/castopod/issues/420)
* **import:** check for empty string when generating podcast guid for feeds not including one ([ac5336f](ac5336fbc5))
* **install:** add created superadmin to most powerful group in instance, ie. superadmin ([2ed511f](2ed511f8a0))
* **persons:** delete person avatar when deleting a person ([c1ec98c](c1ec98c956)), closes [#419](https://code.castopod.org/adaures/castopod/issues/419)
* **platforms:** add matrix.org as a social platform ([9178c3f](9178c3f3af)), closes [#421](https://code.castopod.org/adaures/castopod/issues/421)

### Features

* **admin:** add tooltip for not authorized routes ([f7f9baf](f7f9bafc3e))
* **admin:** emphasize unprivileged items in sidebar with "prohibited" icon ([0bd7dde](0bd7ddea58))
* allow hiding owner's email in public RSS feed ([222e02a](222e02a2af))
* **persons:** order persons by full_name ASC for easier list scanning ([68a599f](68a599fee0)), closes [#418](https://code.castopod.org/adaures/castopod/issues/418)
2024-01-15 16:31:11 +00:00
Yassine Doghri
6f8217e1a6 chore: update CI4 + shield + other php and js packages 2024-01-15 14:34:11 +00:00
semantic-release-bot
1001ec6b76 chore(release): 1.7.4 [skip ci]
## [1.7.4](https://code.castopod.org/adaures/castopod/compare/v1.7.3...v1.7.4) (1/3/2024)

### Bug Fixes

* **media:** add missing HEAD route for static assets served with S3 ([b61a32c](b61a32c8a9))
2024-01-03 15:07:01 +00:00
semantic-release-bot
cc85637e18 chore(release): 1.7.3 [skip ci]
## [1.7.3](https://code.castopod.org/adaures/castopod/compare/v1.7.2...v1.7.3) (12/21/2023)

### Bug Fixes

* **analytics:** upgrade opawg's user-agents-php to user-agents-v2-php ([8cd7886](8cd7886676))
* **platforms:** add Threads and YouTube Music ([9264a2d](9264a2d74c))
2023-12-21 16:34:24 +00:00
semantic-release-bot
98ed36d7a4 chore(release): 1.7.2 [skip ci]
## [1.7.2](https://code.castopod.org/adaures/castopod/compare/v1.7.1...v1.7.2) (12/12/2023)

### Bug Fixes

* **episode-form:** render episode number optional when episode type is trailer or bonus ([694328f](694328f108))
2023-12-12 16:12:45 +00:00
semantic-release-bot
aeaee8ae64 chore(release): 1.7.1 [skip ci]
## [1.7.1](https://code.castopod.org/adaures/castopod/compare/v1.7.0...v1.7.1) (12/1/2023)

### Bug Fixes

* **housekeeping:** add where clause to check episode_id is not null on reset comments count ([119742c](119742cdbb))
2023-12-01 09:46:02 +00:00