Commit Graph

237 Commits

Author SHA1 Message Date
semantic-release-bot b814cfaf7c chore(release): 1.0.0-alpha.63 [skip ci]
# [1.0.0-alpha.63](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.62...v1.0.0-alpha.63) (2021-07-12)

### Features

* build hashed static files to renew browser cache ([37c54d2](37c54d2477)), closes [#107](https://code.podlibre.org/podlibre/castopod-host/issues/107)
2021-07-12 18:01:18 +00:00
Yassine Doghri 37c54d2477 feat: build hashed static files to renew browser cache
- replace rollup config with vitejs
- use vite dev server during development to take advantage of
hot module replacement (HMR)
- add vite service using Vite library to load css and js assets
- update package.json scripts and remove unnecessary
dependencies
- update scripts/bundle-prepare.sh

closes #107
2021-07-12 17:47:56 +00:00
semantic-release-bot cdc660e3b0 chore(release): 1.0.0-alpha.62 [skip ci]
# [1.0.0-alpha.62](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.61...v1.0.0-alpha.62) (2021-07-02)

### Bug Fixes

* **episode:** replace guid's empty string value to null ([441052a](441052af8d))
2021-07-02 07:15:10 +00:00
semantic-release-bot 3b5ce93c1b chore(release): 1.0.0-alpha.61 [skip ci]
# [1.0.0-alpha.61](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.60...v1.0.0-alpha.61) (2021-06-23)

### Bug Fixes

* **release:** add missing version number to castopod-host package ([8f3e9d9](8f3e9d90c1))
* **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)
2021-06-23 15:54:31 +00:00
semantic-release-bot ddeabf5665 chore(release): 1.0.0-alpha.60 [skip ci]
# [1.0.0-alpha.60](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.59...v1.0.0-alpha.60) (2021-06-21)

### Features

* **rss:** add ˂podcast:guid˃ tag for channel ([1fab10e](1fab10eb0d))
2021-06-21 12:08:38 +00:00
semantic-release-bot cc0d56a2f5 chore(release): 1.0.0-alpha.59 [skip ci]
# [1.0.0-alpha.59](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.58...v1.0.0-alpha.59) (2021-06-15)

### Bug Fixes

* check that additional files are valid when creating episode ([eac5bc8](eac5bc876d))
2021-06-15 07:15:18 +00:00
semantic-release-bot 7cb4e3a803 chore(release): 1.0.0-alpha.58 [skip ci]
# [1.0.0-alpha.58](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.57...v1.0.0-alpha.58) (2021-06-11)

### Bug Fixes

* cast actor_id to pass as int to set_interact_as_actor() function ([56a8e5d](56a8e5d7dd))
* **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))
* check for database connection and podcasts table existence before redirecting to install ([eb74e81](eb74e81c3d))
* 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 location to null when getting empty string ([71b1b5f](71b1b5f775))
* update condition in home controller to redirect to install page ([33f1b91](33f1b91d55))
* **activity-pub:** cache issues when navigating to activity stream urls ([7bcbfb3](7bcbfb32f7))
* **activity-pub:** get database records using new model instances ([92536dd](92536ddb38))
* **category:** remove uncategorized option to enforce users in choosing a category ([8c64f25](8c64f25a0e))
* **install:** redirect manually to install wizard on first visit ([2ceaaca](2ceaaca44f))
* **types:** update fake seeders types + fix bugs ([76a4bf3](76a4bf3441))
* update broken contributor dropdown fields ([e5b7515](e5b7515023))
* **ux:** redirect user to install page on database error in home page ([9017e30](9017e30bf4))
* update condition in AnalyticsTrait ([fbc0967](fbc0967caa))

### Performance Improvements

* **cache:** use deleteMatching method to prevent forgetting cached elements in models ([76afc0c](76afc0cfa2))

### Reverts

* set deprecated config options back in App config ([433745f](433745f194))
2021-06-11 16:15:37 +00:00
Yassine Doghri 4730411e9b
ci: call the right scripts for the js lint stage 2021-06-11 09:35:15 +00:00
Yassine Doghri 53a934c8ea
ci: use image with already installed composer & npm + add commit msg and js lint stages 2021-06-11 09:35:10 +00:00
Yassine Doghri cfd29d84e6
ci: merge husky and captainhook git hooks into .husky configuration
- hooks are installed automatically with npm install command
- add commit-msg, pre-commit and
pre-push hooks
- integrate captainhook commands into the created git hooks
2021-06-11 09:35:09 +00:00
Yassine Doghri aa1612342e
style(ecs): add easy-coding-standard to enforce coding style rules for php
- update .devcontainer settings: remove auto-formatting
for php + set intelephense as default formatter
- remove prettier php plugin as it lacks php 8 support
- add captain hook action for checking style pre-commit
- fix style with ecs on all files except views
2021-06-11 09:34:48 +00:00
Yassine Doghri 231d578d64
refactor: add phpstan and update code to adhere to level 5
- move and refactor Image.php from Libraries to Entities folder
- update some database field names
/ types
- update composer packages
2021-05-12 14:00:25 +00:00
Yassine Doghri 5c5c6da4be
refactor: add rector to enforce type declarations, code quality + style and remove dead code
- update CI process to include quality stage (tests + code review)
- add captainhook to install git pre-commit & pre-push hooks
- remove .devcontainer Dockerfile to use project's docker-compose services: all
services can now be started automatically using vscode
- update docs/setup-development.md
2021-05-12 10:48:30 +00:00
semantic-release-bot a54a5964c3 chore(release): 1.0.0-alpha.57 [skip ci]
# [1.0.0-alpha.57](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.56...v1.0.0-alpha.57) (2021-05-12)

### Bug Fixes

* **follow:** add missing helpers to Actor controller ([ee53a73](ee53a732dc))
2021-05-12 10:32:49 +00:00
semantic-release-bot fca7bd6808 chore(release): 1.0.0-alpha.56 [skip ci]
# [1.0.0-alpha.56](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.55...v1.0.0-alpha.56) (2021-05-12)

### Bug Fixes

* **rss:** use originalPath instead of originalMediaPath in Image library ([b4012b7](b4012b7d2e))
2021-05-12 09:16:14 +00:00
semantic-release-bot 6c7964fd51 chore(release): 1.0.0-alpha.55 [skip ci]
# [1.0.0-alpha.55](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.54...v1.0.0-alpha.55) (2021-05-03)

### Features

* add remote_url alternative for transcript and chapters files ([3143c9a](3143c9ad36))
2021-05-03 17:44:20 +00:00
semantic-release-bot 1296187613 chore(release): 1.0.0-alpha.54 [skip ci]
# [1.0.0-alpha.54](https://code.podlibre.org/podlibre/castopod-host/compare/v1.0.0-alpha.53...v1.0.0-alpha.54) (2021-05-03)

### Features

* set app parameter forceGlobalSecureRequests = true forcing requests to go through https ([d9dff1b](d9dff1b8bf))
* **ux:** remove admin dashboard and redirect directly to podcast list ([27c48b8](27c48b8fa9))
* add cache to ActivityPub sql queries + cache activity and note pages ([2d297f4](2d297f45b3))

### Performance Improvements

* **cache:** update CI4 to use cache's deleteMatching method ([54b84f9](54b84f9684))
* **docker:** add redis caching service for development ([05ace8c](05ace8cff2))
2021-05-03 15:43:53 +00:00
Yassine Doghri fad06e697d
refactor: replace castopod ➡ castopod-host
- rename all occurences of castopod to castopod host
- docs: update contribution guidelines
-
docs: update README to include guidance for help and links to socials
- remove
castopod_namespace.json
2021-05-03 15:32:55 +00:00
semantic-release-bot d372d6746c chore(release): 1.0.0-alpha.53 [skip ci]
# [1.0.0-alpha.53](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.52...v1.0.0-alpha.53) (2021-04-16)

### Bug Fixes

* check that note has a preview_card_id before displaying it ([acb8b3a](acb8b3a401)), closes [#114](https://code.podlibre.org/podlibre/castopod/issues/114)
2021-04-16 18:09:32 +00:00
semantic-release-bot b81e812506 chore(release): 1.0.0-alpha.52 [skip ci]
# [1.0.0-alpha.52](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.51...v1.0.0-alpha.52) (2021-04-16)

### Bug Fixes

* **avatar:** use default avatar when no avatar url has been set ([9d23c7e](9d23c7e7e1)), closes [#111](https://code.podlibre.org/podlibre/castopod/issues/111)
2021-04-16 17:15:22 +00:00
semantic-release-bot e2b85a1d8f chore(release): 1.0.0-alpha.51 [skip ci]
# [1.0.0-alpha.51](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.50...v1.0.0-alpha.51) (2021-04-15)

### Bug Fixes

* **interact-as:** set actor_id instead of podcast id upon login event ([5dfade7](5dfade7cf3)), closes [#104](https://code.podlibre.org/podlibre/castopod/issues/104)
2021-04-15 09:20:24 +00:00
semantic-release-bot 1c0d6cee44 chore(release): 1.0.0-alpha.50 [skip ci]
# [1.0.0-alpha.50](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.49...v1.0.0-alpha.50) (2021-04-14)

### Bug Fixes

* **persons:** prevent overflow of persons list by adding horizontal scroll ([9e8995d](9e8995dc6e))
2021-04-14 14:54:22 +00:00
semantic-release-bot 388fb42b3e chore(release): 1.0.0-alpha.49 [skip ci]
# [1.0.0-alpha.49](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.48...v1.0.0-alpha.49) (2021-04-12)

### Bug Fixes

* **multiselect:** add missing class names in choices options for purge to work properly ([719538d](719538d0cc))
2021-04-12 09:37:37 +00:00
semantic-release-bot 6303e71973 chore(release): 1.0.0-alpha.48 [skip ci]
# [1.0.0-alpha.48](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.47...v1.0.0-alpha.48) (2021-04-10)

### Bug Fixes

* **import-with-escaped-characters:** remove \CodeIgniter\HTTP\URI in download_file, closes [#103](https://code.podlibre.org/podlibre/castopod/issues/103) ([35b5be0](35b5be095f))
2021-04-10 14:42:23 +00:00
semantic-release-bot 15180d2265 chore(release): 1.0.0-alpha.47 [skip ci]
# [1.0.0-alpha.47](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.46...v1.0.0-alpha.47) (2021-04-10)

### Bug Fixes

* **episodeCount:** add missing brackets to French language file ([c1b4112](c1b411265a))
2021-04-10 14:14:47 +00:00
semantic-release-bot 6fc06bc8f8 chore(release): 1.0.0-alpha.46 [skip ci]
# [1.0.0-alpha.46](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.45...v1.0.0-alpha.46) (2021-04-09)

### Bug Fixes

* **episodes-page:** handle defaultQuery being null when no podcast episodes ([15183b7](15183b7eab)), closes [#100](https://code.podlibre.org/podlibre/castopod/issues/100)
2021-04-09 13:31:01 +00:00
semantic-release-bot 14d3d1d727 chore(release): 1.0.0-alpha.45 [skip ci]
# [1.0.0-alpha.45](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.44...v1.0.0-alpha.45) (2021-04-08)

### Bug Fixes

* add head request to analytics_hit route ([f0a2f0b](f0a2f0bea4))
2021-04-08 14:03:52 +00:00
semantic-release-bot b5eb4c68a5 chore(release): 1.0.0-alpha.44 [skip ci]
# [1.0.0-alpha.44](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.43...v1.0.0-alpha.44) (2021-04-08)

### Bug Fixes

* **rss:** set ❬itunes:author❭ tag to owner_name if publisher not specified ([2271c14](2271c1445b)), closes [#96](https://code.podlibre.org/podlibre/castopod/issues/96)
2021-04-08 11:20:49 +00:00
semantic-release-bot 0cd6b80847 chore(release): 1.0.0-alpha.43 [skip ci]
# [1.0.0-alpha.43](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.42...v1.0.0-alpha.43) (2021-04-08)

### Bug Fixes

* **episode-form:** show warning to set `memory_limit`, `upload_max_filesize` & `post_max_size` ([3b3c218](3b3c218b9c)), closes [#5](https://code.podlibre.org/podlibre/castopod/issues/5) [#86](https://code.podlibre.org/podlibre/castopod/issues/86)
2021-04-08 10:50:31 +00:00
semantic-release-bot c37a4af2d8 chore(release): 1.0.0-alpha.42 [skip ci]
# [1.0.0-alpha.42](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.41...v1.0.0-alpha.42) (2021-04-02)

### Features

* **fediverse:** implement activitypub protocols + update user interface ([2f525c0](2f525c0f6e)), closes [#69](https://code.podlibre.org/podlibre/castopod/issues/69) [#65](https://code.podlibre.org/podlibre/castopod/issues/65) [#85](https://code.podlibre.org/podlibre/castopod/issues/85) [#51](https://code.podlibre.org/podlibre/castopod/issues/51) [#91](https://code.podlibre.org/podlibre/castopod/issues/91) [#92](https://code.podlibre.org/podlibre/castopod/issues/92) [#88](https://code.podlibre.org/podlibre/castopod/issues/88)
2021-04-02 17:24:40 +00:00
Yassine Doghri 2f525c0f6e feat(fediverse): implement activitypub protocols + update user interface
- add "ActivityPub" library to handle server to server federation and basic
  client to server protocols using activitypub:
  - add webfinger endpoint to look for actor
  - add actor definition with inbox / outbox / followers
  - remote follow an actor
  - create notes with possible preview cards
  - interract with favourites, reblogs and replies
  - block incoming actors and/or domains
  - broadcast/schedule activities to fediverse followers using a cron task
- For castopod, the podcast is the actor:
  - overwrite the activitypub library for castopod's specific needs
  - perform basic interactions administrating a podcast to interact with fediverse users:
    - create notes with episode attachment
    - favourite and share a note + reply
    - add specific castopod_namespaces for podcasts and episodes definitions
- overwrite CodeIgniter's Route service to include alternate-content option for
  activitystream requests
- update episode publication logic:
  - remove publication inputs in create / edit episode form
  - publish / schedule or unpublish an episode after creation
  - the podcaster publishes a note when publishing an episode
- Javascript / Typescript modules:
  - fix Dropdown.ts to keep dropdown menu in foreground
  - add Modal.ts for funding links modal
  - add Toggler.ts to toggle various css states in ui
- User Interface:
  - update tailwindcss to v2
  - use castopod's pine and rose colors
  - update public layout to a 3 column layout
  - add pages in public for podcast activity, episode list and notes
  - update episode page to include linked notes
  - remove previous and next episodes from episode pages
  - show different public views depending on whether user is authenticated or not
  - use Kumbh Sans and Montserrat fonts
- update CodeIgniter's config files
- with CodeIgniter's new requirements, update docker environments are now based on
  php v7.3 image
- move Image entity to Libraries
- update composer and npm packages to latest versions

closes #69 #65 #85, fixes #51 #91 #92 #88
2021-04-02 17:20:02 +00:00
semantic-release-bot dd3ac9b4ab chore(release): 1.0.0-alpha.41 [skip ci]
# [1.0.0-alpha.41](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.40...v1.0.0-alpha.41) (2021-03-30)

### Features

* **partner:** add link and image in episode description ([ad07bb9](ad07bb9330))
2021-03-30 16:25:05 +00:00
semantic-release-bot 62bae1eb70 chore(release): 1.0.0-alpha.40 [skip ci]
# [1.0.0-alpha.40](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.39...v1.0.0-alpha.40) (2021-03-19)

### Features

* **custom-rss:** add custom xml tag injection in rss feed for ❬channel❭ and ❬item❭ ([6ecdaad](6ecdaad911))
2021-03-19 16:17:09 +00:00
semantic-release-bot ea5383643c chore(release): 1.0.0-alpha.39 [skip ci]
# [1.0.0-alpha.39](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.38...v1.0.0-alpha.39) (2021-03-01)

### Bug Fixes

* **embeddable-player:** enable any ancestor when X-Frame-Options is set on server ([44a4962](44a4962e0b))
2021-03-01 15:08:05 +00:00
semantic-release-bot 4e5b11ba5f chore(release): 1.0.0-alpha.38 [skip ci]
# [1.0.0-alpha.38](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.37...v1.0.0-alpha.38) (2021-02-27)

### Features

* **embeddable-player:**  add embeddable player widget ([141788f](141788fa08))
2021-02-27 21:25:23 +00:00
semantic-release-bot 526809ef28 chore(release): 1.0.0-alpha.37 [skip ci]
# [1.0.0-alpha.37](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.36...v1.0.0-alpha.37) (2021-02-17)

### Bug Fixes

* **import:** remove query string from files url ([109c4aa](109c4aa1af))
2021-02-17 10:55:08 +00:00
semantic-release-bot 6a7d7c3021 chore(release): 1.0.0-alpha.36 [skip ci]
# [1.0.0-alpha.36](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.35...v1.0.0-alpha.36) (2021-02-16)

### Features

* **platforms:** add pod.link ([3d7a232](3d7a2320dd))
2021-02-16 13:34:15 +00:00
semantic-release-bot 3ad98c6a6a chore(release): 1.0.0-alpha.35 [skip ci]
# [1.0.0-alpha.35](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.34...v1.0.0-alpha.35) (2021-02-12)

### Bug Fixes

* **admin:** save block and lock switches ([b66c0af](b66c0afc8f))
2021-02-12 09:53:36 +00:00
semantic-release-bot b3a34983fb chore(release): 1.0.0-alpha.34 [skip ci]
# [1.0.0-alpha.34](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.33...v1.0.0-alpha.34) (2021-02-11)

### Bug Fixes

* **rss-import:** add Castopod user-agent, handle redirects for downloaded files, add Content namespace ([214243b](214243b3fe))
2021-02-11 17:45:16 +00:00
semantic-release-bot 3eecb82de8 chore(release): 1.0.0-alpha.33 [skip ci]
# [1.0.0-alpha.33](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.32...v1.0.0-alpha.33) (2021-02-10)

### Features

* **platforms:** add helloasso ([16cb993](16cb993ee6))
2021-02-10 17:13:50 +00:00
semantic-release-bot 64d9100f7c chore(release): 1.0.0-alpha.32 [skip ci]
# [1.0.0-alpha.32](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.31...v1.0.0-alpha.32) (2021-02-10)

### Features

* **person:** add podcastindex.org namespace person tag ([8acd011](8acd011f13))
2021-02-10 16:24:03 +00:00
semantic-release-bot 17e1e94a50 chore(release): 1.0.0-alpha.31 [skip ci]
# [1.0.0-alpha.31](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.30...v1.0.0-alpha.31) (2020-12-23)

### Features

* **rss:** add podcast:location tag ([c0a2282](c0a22829bd))
2020-12-23 14:15:38 +00:00
semantic-release-bot ba088649d2 chore(release): 1.0.0-alpha.30 [skip ci]
# [1.0.0-alpha.30](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.29...v1.0.0-alpha.30) (2020-12-21)

### Features

* **rss:** update monetization tag so that it meets PodcastIndex requirements ([4c7ecbe](4c7ecbee83))
2020-12-21 16:12:26 +00:00
semantic-release-bot 81c1c038c4 chore(release): 1.0.0-alpha.29 [skip ci]
# [1.0.0-alpha.29](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.28...v1.0.0-alpha.29) (2020-12-10)

### Bug Fixes

* **episodes:** add publication status + set publication date to null when none has been set ([d882981](d882981b3a)), closes [#70](https://code.podlibre.org/podlibre/castopod/issues/70)

### Reverts

* **soundbites:** remove soundbite table from episode's public page ([5dc0f19](5dc0f19656))
2020-12-10 10:47:59 +00:00
semantic-release-bot 6d6747afa3 chore(release): 1.0.0-alpha.28 [skip ci]
# [1.0.0-alpha.28](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.27...v1.0.0-alpha.28) (2020-12-07)

### Features

* **rss:** add soundbites according to the podcastindex specs ([6b34617](6b34617d07)), closes [#83](https://code.podlibre.org/podlibre/castopod/issues/83)
2020-12-07 20:17:41 +00:00
semantic-release-bot 0571a075da chore(release): 1.0.0-alpha.27 [skip ci]
# [1.0.0-alpha.27](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.26...v1.0.0-alpha.27) (2020-12-07)

### Features

* **platforms:** add AntennaPod ([53e9cfd](53e9cfd61c))
2020-12-07 20:00:29 +00:00
semantic-release-bot 6d39beef91 chore(release): 1.0.0-alpha.26 [skip ci]
# [1.0.0-alpha.26](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.25...v1.0.0-alpha.26) (2020-11-30)

### Bug Fixes

* **analytics:** update service management so that it works with new OPAWG slug values ([7fe9d42](7fe9d42500))
2020-11-30 11:49:45 +00:00
semantic-release-bot 8b3c689f86 chore(release): 1.0.0-alpha.25 [skip ci]
# [1.0.0-alpha.25](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.24...v1.0.0-alpha.25) (2020-11-30)

### Features

* **platforms:** add podfriend ([9fdc8d3](9fdc8d3293))
2020-11-30 11:16:55 +00:00
semantic-release-bot 74759dae14 chore(release): 1.0.0-alpha.24 [skip ci]
# [1.0.0-alpha.24](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.23...v1.0.0-alpha.24) (2020-11-26)

### Features

* **monetization:** add Web Monetization support ([96a6026](96a6026f1d))
2020-11-26 18:58:02 +00:00
semantic-release-bot e8771755b7 chore(release): 1.0.0-alpha.23 [skip ci]
# [1.0.0-alpha.23](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.22...v1.0.0-alpha.23) (2020-11-24)

### Bug Fixes

* define podcastNamespaceLink value ([0d744d2](0d744d212d))
2020-11-24 21:10:20 +00:00
semantic-release-bot 674ffd1cfb chore(release): 1.0.0-alpha.22 [skip ci]
# [1.0.0-alpha.22](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.21...v1.0.0-alpha.22) (2020-11-24)

### Features

* **rss:** add transcript and chapters support ([e769d83](e769d83a93)), closes [#72](https://code.podlibre.org/podlibre/castopod/issues/72) [#82](https://code.podlibre.org/podlibre/castopod/issues/82)
2020-11-24 20:21:59 +00:00
semantic-release-bot b9c8008062 chore(release): 1.0.0-alpha.21 [skip ci]
# [1.0.0-alpha.21](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.20...v1.0.0-alpha.21) (2020-11-24)

### Features

* **platforms:** add Fediverse and some funding platforms, add link on logo ([afc3d50](afc3d50289))
2020-11-24 18:25:10 +00:00
semantic-release-bot e6e21ddc3f chore(release): 1.0.0-alpha.20 [skip ci]
# [1.0.0-alpha.20](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.19...v1.0.0-alpha.20) (2020-11-24)

### Bug Fixes

* **import:** use <image><url> tag when no <itunes:image> is present ([20e607a](20e607afb7))

### Features

* **rss:** add podcast-namespace tags for platforms + previousUrl tag ([dbba8dc](dbba8dc581)), closes [#73](https://code.podlibre.org/podlibre/castopod/issues/73) [#75](https://code.podlibre.org/podlibre/castopod/issues/75) [#76](https://code.podlibre.org/podlibre/castopod/issues/76) [#80](https://code.podlibre.org/podlibre/castopod/issues/80)
2020-11-24 16:50:21 +00:00
semantic-release-bot 7ee579d054 chore(release): 1.0.0-alpha.19 [skip ci]
# [1.0.0-alpha.19](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.18...v1.0.0-alpha.19) (2020-11-13)

### Bug Fixes

* handle HEAD requests on podcast_feed route ([74b2640](74b2640f2a)), closes [#79](https://code.podlibre.org/podlibre/castopod/issues/79)
2020-11-13 16:10:23 +00:00
semantic-release-bot b619e6d88f chore(release): 1.0.0-alpha.18 [skip ci]
# [1.0.0-alpha.18](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.17...v1.0.0-alpha.18) (2020-11-09)

### Features

* **platforms:** add Podcast Index ([ad52b1c](ad52b1cc2b))
2020-11-09 17:17:51 +00:00
semantic-release-bot d65f26e80a chore(release): 1.0.0-alpha.17 [skip ci]
# [1.0.0-alpha.17](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.16...v1.0.0-alpha.17) (2020-11-05)

### Bug Fixes

* **open-graph:** replace non existant episode description to podcast description in podcast page ([b02584e](b02584ee60))
2020-11-05 19:04:14 +00:00
semantic-release-bot 50b52f904e chore(release): 1.0.0-alpha.16 [skip ci]
# [1.0.0-alpha.16](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.15...v1.0.0-alpha.16) (2020-11-04)

### Features

* add Open Graph and Twitter meta tags ([af970b8](af970b8bac)), closes [#41](https://code.podlibre.org/podlibre/castopod/issues/41)
2020-11-04 17:07:18 +00:00
semantic-release-bot 0e38dcca4a chore(release): 1.0.0-alpha.15 [skip ci]
# [1.0.0-alpha.15](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.14...v1.0.0-alpha.15) (2020-11-03)

### Features

* **analytics:** add 'other' group to pie charts in order to display more accurate data ([73acef9](73acef933f))
2020-11-03 14:18:26 +00:00
semantic-release-bot ba89fd590d chore(release): 1.0.0-alpha.14 [skip ci]
# [1.0.0-alpha.14](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.13...v1.0.0-alpha.14) (2020-11-02)

### Features

* **analytics:** add weekday and hour bar charts ([8ab3132](8ab313296b))
2020-11-02 18:19:13 +00:00
semantic-release-bot 79a20a3bc8 chore(release): 1.0.0-alpha.13 [skip ci]
# [1.0.0-alpha.13](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.12...v1.0.0-alpha.13) (2020-10-29)

### Bug Fixes

* **episodes-table:** set descriptions to be not null ([6774ec1](6774ec10fa))

### Features

* add episode_numbering() component helper to display episode and season numbers ([3f4a6bd](3f4a6bd0b9))
* **episodes:** replace all audio file URL parameters with base64 encoded data ([e1f65cd](e1f65cd3b5))
2020-10-29 17:56:08 +00:00
semantic-release-bot 21da91eb9d chore(release): 1.0.0-alpha.12 [skip ci]
# [1.0.0-alpha.12](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.11...v1.0.0-alpha.12) (2020-10-26)

### Bug Fixes

* replace getWebEnclosureUrl with getEnclosureWebUrl ([8122cea](8122ceaf8a))
2020-10-26 17:30:40 +00:00
semantic-release-bot 0683ea94d8 chore(release): 1.0.0-alpha.11 [skip ci]
# [1.0.0-alpha.11](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.10...v1.0.0-alpha.11) (2020-10-26)

### Features

* add CDN url ([972bcbf](972bcbf65e)), closes [#37](https://code.podlibre.org/podlibre/castopod/issues/37)
2020-10-26 16:17:35 +00:00
semantic-release-bot 384b6b27a3 chore(release): 1.0.0-alpha.10 [skip ci]
# [1.0.0-alpha.10](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.9...v1.0.0-alpha.10) (2020-10-26)

### Bug Fixes

* **install:** redirect to host_url install route on instanceConfig validation error ([99250b1](99250b1868))
2020-10-26 15:29:29 +00:00
semantic-release-bot 414b23a3b7 chore(release): 1.0.0-alpha.9 [skip ci]
# [1.0.0-alpha.9](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.8...v1.0.0-alpha.9) (2020-10-26)

### Features

* display castopod version in admin footer ([9f2574e](9f2574e6fb)), closes [#68](https://code.podlibre.org/podlibre/castopod/issues/68)
2020-10-26 14:20:19 +00:00
semantic-release-bot 6b36a80102 chore(release): 1.0.0-alpha.8 [skip ci]
# [1.0.0-alpha.8](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.7...v1.0.0-alpha.8) (2020-10-22)

### Features

* **episodes:** schedule episode with future publication_date by using cache expiration time ([4f1e773](4f1e773c0f)), closes [#47](https://code.podlibre.org/podlibre/castopod/issues/47)
2020-10-22 17:49:16 +00:00
Yassine Doghri 4f1e773c0f feat(episodes): schedule episode with future publication_date by using cache expiration time
- merge publication date fields into one field instanciated with flatpickr datetime picker
- get user timezone to convert user publication_date input to UTC
- remove setPublishedAt() method from episode entity
- add publication pill component to display the episode publication date info
- clear cache after episode insert
- use CI is_really_writable() helper in install instead of is_writable()
- fix latest episodes layout
- update tsconfig to only include ts folders
- update DEPENDENCIES.md to include flatpickr
- add format_duration helper to format episode enclosure duration instead of translating it (causes
translation bug)
- add Time.ts module to convert UTC time to user localized time for episode publication dates
- fix some layout issues
- update php and js dependencies to latest versions

closes #47
2020-10-22 17:41:59 +00:00
semantic-release-bot 0ab17d1075 chore(release): 1.0.0-alpha.7 [skip ci]
# [1.0.0-alpha.7](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.6...v1.0.0-alpha.7) (2020-10-21)

### Features

* **analytics:** add service name from rss user-agent ([7202b98](7202b9867b))

### BREAKING CHANGES

* **analytics:** analytics_podcasts_by_player table and analytics_podcasts procedure were updated
2020-10-21 16:08:07 +00:00
semantic-release-bot 8ca5b33b60 chore(release): 1.0.0-alpha.6 [skip ci]
# [1.0.0-alpha.6](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.5...v1.0.0-alpha.6) (2020-10-20)

### Bug Fixes

* **cache:** add locale for podcast and episode pages + clear some persisting cache in models ([9cec8a8](9cec8a81cc)), closes [#42](https://code.podlibre.org/podlibre/castopod/issues/42) [#61](https://code.podlibre.org/podlibre/castopod/issues/61)
2020-10-20 15:50:31 +00:00
semantic-release-bot a354940e5e chore(release): 1.0.0-alpha.5 [skip ci]
# [1.0.0-alpha.5](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.4...v1.0.0-alpha.5) (2020-10-20)

### Features

* add lock podcast according to the Podcastindex podcast-namespace to prevent unauthozized import ([72b3012](72b301272e))
2020-10-20 13:50:01 +00:00
semantic-release-bot e49b223926 chore(release): 1.0.0-alpha.4 [skip ci]
# [1.0.0-alpha.4](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.3...v1.0.0-alpha.4) (2020-10-20)

### Features

* **analytics:** add charts and data export ([78625c4](78625c471b))
2020-10-20 09:42:47 +00:00
semantic-release-bot 112a71d867 chore(release): 1.0.0-alpha.3 [skip ci]
# [1.0.0-alpha.3](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.2...v1.0.0-alpha.3) (2020-10-19)

### Bug Fixes

* **analytics:** remove charts empty values + remove useless language cache ([1678794](1678794153))
2020-10-19 16:50:56 +00:00
semantic-release-bot bc8b88f6f6 chore(release): 1.0.0-alpha.2 [skip ci]
# [1.0.0-alpha.2](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.1...v1.0.0-alpha.2) (2020-10-19)

### Features

* add cumulative listening time charts ([588b4d2](588b4d28da))
2020-10-19 10:46:00 +00:00
semantic-release-bot 14733105e6 chore(release): 1.0.0-alpha.1 [skip ci]
# 1.0.0-alpha.1 (2020-10-16)

### Bug Fixes

* add public/media folder to castopod bundle ([8053d35](8053d3521b)), closes [#52](https://code.podlibre.org/podlibre/castopod/issues/52)
* add where condition to get episode count without deleted episodes ([7661734](7661734ed2)), closes [#67](https://code.podlibre.org/podlibre/castopod/issues/67)
* comment all cache clean after page update to prevent analytics cache deletion ([e6197a4](e6197a4972))
* 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))
* declare typed properties in PHPDoc for php<7.4 ([14dd44d](14dd44d03d)), closes [#23](https://code.podlibre.org/podlibre/castopod/issues/23)
* escape generated feed tag values and remove new lines from public pages meta description ([6238a43](6238a43863)), closes [#57](https://code.podlibre.org/podlibre/castopod/issues/57) [#46](https://code.podlibre.org/podlibre/castopod/issues/46)
* fix layout bugs in admin and update translation files ([a834171](a83417180c)), closes [#40](https://code.podlibre.org/podlibre/castopod/issues/40)
* minor corrections ([13be386](13be386842))
* move analytics to helper ([d311917](d31191732e))
* re-order graph values ([35f633b](35f633b4c7))
* remove required for other_categories field and add podcast_id to latest podcasts query ([5417be0](5417be0049))
* rename issue_templates labels ([9f00305](9f00305844))
* rename MyAccount controller file ([e109df3](e109df3004)), closes [#60](https://code.podlibre.org/podlibre/castopod/issues/60)
* reorder fields as composite primary keys for analytics tables ([9660aa9](9660aa97c8))
* replace website key for webpages in breadcrumb translate file ([50e32ff](50e32ff756))
* set episode duration translation to hardcoded english ([c39efc9](c39efc9489)), closes [#64](https://code.podlibre.org/podlibre/castopod/issues/64)
* set episode guid upon episode creation ([ad8b153](ad8b153f2a)), closes [#48](https://code.podlibre.org/podlibre/castopod/issues/48)
* update purgecss content path for php helper files ([eb70bb4](eb70bb4f70)), closes [#59](https://code.podlibre.org/podlibre/castopod/issues/59)
* **install:** redirect to input baseUrl after instance config ([2426af7](2426af7de8)), closes [#53](https://code.podlibre.org/podlibre/castopod/issues/53)
* **platforms:** display platform link only when visible is toggled on ([6e503c8](6e503c8d61)), closes [#39](https://code.podlibre.org/podlibre/castopod/issues/39)
* sort episodic podcasts by season ([d7b6794](d7b6794f68))
* update .htaccess for shared hosting config ([2379826](2379826352))
* update iso-369 language table seeder ([0c90db4](0c90db44c4))
* **package.json:** update destination of postcss generation scripts ([21413f8](21413f8af3))
* use slash instead of backslash to call layout ([a80adb2](a80adb2295))

### Features

* add alternate rss feed link tag to podcast page head ([a973c09](a973c097d5)), closes [#35](https://code.podlibre.org/podlibre/castopod/issues/35)
* add analytics and unknown useragents ([ec92e65](ec92e65aa4))
* add breadcrumb in admin area ([7fb1de2](7fb1de2cf3)), closes [#17](https://code.podlibre.org/podlibre/castopod/issues/17)
* add french translation ([196920d](196920d62f))
* add install wizard form to bootstrap database and create the first superadmin user ([cba871c](cba871c5df)), closes [#2](https://code.podlibre.org/podlibre/castopod/issues/2)
* add ISO 3166 country codes ([97cd94b](97cd94b474))
* add map analytics, add episodes analytics, clean analytics page layout, translate countries ([07eae83](07eae83a00))
* add npm for js dependencies + move src/ files to root folder ([cbb83a6](cbb83a6f30))
* add pages table to store custom instance pages (eg. legal-notice, cookie policy, etc.) ([9c224a8](9c224a8ac6)), closes [#24](https://code.podlibre.org/podlibre/castopod/issues/24)
* add platform models ([a333d29](a333d29196))
* add platforms form in podcast settings ([043f49c](043f49c784))
* add platforms tables ([ce59344](ce5934419a))
* 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/issues/3) [#18](https://code.podlibre.org/podlibre/castopod/issues/18)
* create optimized & resized images upon upload ([02e4441](02e4441f98)), closes [#6](https://code.podlibre.org/podlibre/castopod/issues/6)
* display legal disclaimer and warning on podcast import page ([2f07992](2f07992e55)), closes [#34](https://code.podlibre.org/podlibre/castopod/issues/34)
* edit + delete podcast and episode ([ac5f0c7](ac5f0c7328))
* enhance admin ui with responsive design and ux improvements ([2d44b45](2d44b457a0)), closes [#31](https://code.podlibre.org/podlibre/castopod/issues/31) [#9](https://code.podlibre.org/podlibre/castopod/issues/9)
* enhance ui using javascript in admin area ([c0e66d5](c0e66d5f70))
* import podcast from an rss feed url ([9a5d5a1](9a5d5a15b4)), closes [#21](https://code.podlibre.org/podlibre/castopod/issues/21)
* set podcast / episode description in the pages description meta tag ([1c4a504](1c4a50442b)), closes [#44](https://code.podlibre.org/podlibre/castopod/issues/44)
* update analytics so to meet IABv2 requirements ([03e23a2](03e23a28bf)), closes [#10](https://code.podlibre.org/podlibre/castopod/issues/10)
* **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))
* **devcontainer:** add devcontainer settings for dev environment ([69e7266](69e7266736))
* **episodes:** add create form and view pages for episode ([f3b2c8b](f3b2c8b84f)), closes [#1](https://code.podlibre.org/podlibre/castopod/issues/1)
* **episodes:** add migrations, model and entity for episodes table ([0444821](044482174e))
* **podcast:** create a podcast using form ([1202ba3](1202ba3545))
* **podcast-form:** update routes and redirect to podcast page ([12ce905](12ce905799))
* **public-ui:** adapt public podcast and episode pages to wireframes ([40a0535](40a0535fc1)), closes [#30](https://code.podlibre.org/podlibre/castopod/issues/30) [#13](https://code.podlibre.org/podlibre/castopod/issues/13)
* **rss:** generate rss feed from podcast entity ([c815ecd](c815ecd664))
* **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/issues/11)
* minor corrections to some tables ([3bf9420](3bf9420b59))
* write id3v2 tags to episode's audio file ([4651d01](4651d01a84))

### Reverts

* use basic input file for episodes audio files instead of button for better UX ([d5f22fb](d5f22fbb38))
2020-10-16 15:26:13 +00:00
Yassine Doghri 6c36888a21 ci(release): automate castopod versioned releases using semantic-release
closes #38
2020-10-16 15:17:08 +00:00
Yassine Doghri eb70bb4f70 fix: update purgecss content path for php helper files
- fix overshooting podcast name when too long in podcast sidebar
- update npm packages to latest versions

fixes #59
2020-10-15 14:42:30 +00:00
Benjamin Bellamy 03e23a28bf feat: update analytics so to meet IABv2 requirements
- https://iabtechlab.com/wp-content/uploads/2017/12/Podcast_Measurement_v2-Dec-20-2017.pdf
  - no IP address is ever stored on the server. Only aggregate data is stored in the dababase.
  - rolling 24-hour window
  - castopod does not do pre-load
  - IP Blacklisting https://github.com/client9/ipcat
  - user-agent Filtering https://github.com/opawg/user-agents
  - ignores 2 bytes range "Range: 0-1" (performed by official Apple iOS Podcast app)
  - in case of partial content, adds up all requests to check >1mn was downloaded
  - identifying Uniques is done with a combination of IP Address and User Agent
- add AMcharts
- add some graphs
- add regions to analytics
- add ipcat blacklist
- enhance useragents performances
- add filesize and header size in order to calculate 1mn downloads
- update publisher ID3 field
- update castopod icon
- add disclaimer and warning import form translation
- update docs/setup-development.md

closes #10
2020-10-15 14:42:02 +00:00
Yassine Doghri 2d44b457a0 feat: enhance admin ui with responsive design and ux improvements
- add podcast sidebar navigation
- add podcast dashboard with latest episodes
- add pagination to podcast episodes
- add components helper to reuse ui components (button, data_table, etc.)
- enhance podcast and episode forms by splitting them into form sections
- add hint tooltips to podcast and episode forms
- transform radio inputs as buttons for better ux
- replace explicit field by parental_advisory
- replace author field by publisher
- add podcasts_categories table to set multiple categories
- use choices.js to enhance multiselect fields
- update Language files
- update js dependencies to latest versions

closes #31, #9
2020-10-15 14:41:56 +00:00
Yassine Doghri 02e4441f98 feat: create optimized & resized images upon upload
- resize uploaded image to thumbnail, medium, large, feed, and id3 formats
- set image url formats where adapted in views
- set format sizes and extensions in Images config file for customization
- add validation for image uploads: `min_dims` and `is_image_squared`
- update codeigniter4 and myth-auth php packages to latest develop versions
- update npm packages to latest versions
- update public/.htaccess

closes #6
2020-10-15 14:41:45 +00:00
Yassine Doghri 40a0535fc1 feat(public-ui): adapt public podcast and episode pages to wireframes
- adapt wireframes with responsive design
- refactor models methods to cache requests for faster queries
- update public controllers to cache pages while retaining analytics hits
- add platform links to podcast page
- add previous / next episodes in episode page
- update npm packages to latest versions

closes #30, #13
2020-10-15 14:41:43 +00:00
Yassine Doghri 043f49c784 feat: add platforms form in podcast settings
- set and remove platform links for a podcast
- remove unnecessary fields from platforms and platform_links tables
- add platforms svg icons to show in form
- update platform and auth seeders
- update svgo config for images
2020-10-15 14:41:39 +00:00
Yassine Doghri ed6e953010 refactor: add php_codesniffer to define castopod's coding style based on psr-1
- add .editorconfig file
- format all files to comply with castopod's coding style
- switch parsedown dependency with commonmark library to better follow commonmark spec for markdown
- add prettier command to format all project files at once

closes #16
2020-10-15 14:41:22 +00:00
Yassine Doghri e0da11517d refactor: update js files to typescript and replace parcel with rollup
- add basic rollup config to bundle minified and browser compatible js
- use babel to transpile
typescript files to js
- add static code checkers: eslint and stylelint
- update package.json
scripts
- update DEPENDENCIES.md file to include rollup and popper
- set html in rss feed
description fields
- update Podcast and Episode entities to add description_html attribute
generated by parsing markdown to html using parsedown

#9
2020-10-15 14:41:12 +00:00
Yassine Doghri c0e66d5f70 feat: enhance ui using javascript in admin area
- bundle js using parcel
- add markdown editor, html editor, dropdown and tooltip features using third-party packages
- integrate optimized inline svg icons from RemixIcon using svgo and a php helper
- add scripts in package.json to bundle icons, images, css and js
- update tailwind config to add purgecss lookups and typography plugin
- refactor views to add missing pages in user journey
- update admin's holy grail layout using css grid
2020-10-15 14:41:09 +00:00
Yassine Doghri ac5f0c7328 feat: edit + delete podcast and episode
- refactor model / entity and controller logic for DRY code
- update episodes and podcasts
migrations
- define callbacks for podcast and episode models for enclosure update and cache
clearing
2020-10-15 14:40:57 +00:00
Yassine Doghri f3b2c8b84f feat(episodes): add create form and view pages for episode
- add james-heinrich/getid3 library as a dependency to composer.json
- update DEPENDENCIES.md file
- fix episodes table migration script
- add js devDependencies: prettier, @prettier/plugin-php and lint-staged to automatically format staged files before commit
- reformat all files to the prettier format
- refactor code by separating some logic as helper functions
- overwrite existing files when uploading new files with the same name

fixes #1
2020-10-15 14:40:47 +00:00
Yassine Doghri 21413f8af3 fix(package.json): update destination of postcss generation scripts 2020-10-15 14:06:41 +00:00
Yassine Doghri cbb83a6f30 feat: add npm for js dependencies + move src/ files to root folder
- add node service in docker-compose.yml
- update .devcontainer Dockerfile by adding node, npm and vim
- init package.json for npm with tailwindcss, postcss, commitlint and commitizen as dev dependencies
- update default layout main header and footer
- replace CI's welcome_message.php with home.php listing all podcasts
- add AUTHORS.md file
- add docs folder in which to place castopod's technical documentation
2020-10-15 14:05:36 +00:00