gitextract_4vqhqypb/ ├── .distignore ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE.md │ └── workflows/ │ ├── docker-image.yml │ ├── release-beta.yml │ ├── release-wordpress.yml │ └── tests.yml ├── .gitignore ├── .gitmodules ├── .php-cs-fixer.dist.php ├── .prettierrc ├── .wp-env.json ├── .wp-env.test.json ├── .zed/ │ └── settings.json ├── AGENTS.md ├── Dockerfile ├── Makefile ├── README.md ├── bin/ │ ├── code-coverage.sh │ ├── docker-entry.sh │ ├── docker-setup.sh │ ├── release.sh │ ├── remove-tunnel.sh │ ├── reset-nux.sh │ ├── template_ref.erb │ ├── template_ref.rb │ ├── template_ref_json.php │ ├── uadetect.php │ ├── update-opawg.sh │ ├── update_pwp4.sh │ ├── workspace.js │ └── wp-env-test-after-start.js ├── bootstrap/ │ ├── autoload.php │ ├── bootstrap.php │ └── constants.php ├── changelog.txt ├── client/ │ ├── .tool-versions │ ├── config.local.template.js │ ├── index.html │ ├── package.json │ ├── postcss.config.js │ ├── src/ │ │ ├── assets/ │ │ │ └── index.d.ts │ │ ├── client.ts │ │ ├── components/ │ │ │ ├── button/ │ │ │ │ └── Button.vue │ │ │ ├── combobox/ │ │ │ │ └── Combobox.vue │ │ │ ├── icons/ │ │ │ │ └── Avatar.vue │ │ │ ├── modal/ │ │ │ │ └── Modal.vue │ │ │ ├── module/ │ │ │ │ └── Module.vue │ │ │ ├── popover/ │ │ │ │ └── Popover.vue │ │ │ ├── steps/ │ │ │ │ └── Steps.vue │ │ │ ├── tabs/ │ │ │ │ ├── Tab.vue │ │ │ │ ├── TabsContainer.vue │ │ │ │ └── index.ts │ │ │ ├── tag/ │ │ │ │ └── Tag.vue │ │ │ └── tooltip/ │ │ │ └── Tooltip.vue │ │ ├── lib/ │ │ │ ├── api.ts │ │ │ ├── array.ts │ │ │ ├── auphonic.api.ts │ │ │ ├── chapters.ts │ │ │ ├── errorHandling.ts │ │ │ ├── license.ts │ │ │ ├── normalplaytime.ts │ │ │ ├── popper.ts │ │ │ ├── statusHelpers.ts │ │ │ ├── timestamp.ts │ │ │ └── wordpress.ts │ │ ├── modules/ │ │ │ ├── auphonic/ │ │ │ │ ├── Auphonic.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── FileChooser.vue │ │ │ │ │ ├── Logo.vue │ │ │ │ │ ├── ManageProductionForm.vue │ │ │ │ │ ├── SelectPreset.vue │ │ │ │ │ ├── SelectProduction.vue │ │ │ │ │ ├── StartScreen.vue │ │ │ │ │ ├── WebhookToggle.vue │ │ │ │ │ └── production_form/ │ │ │ │ │ ├── DonePage.vue │ │ │ │ │ ├── PlusTransferStatus.vue │ │ │ │ │ ├── TransferFileItem.vue │ │ │ │ │ ├── TransferFileList.vue │ │ │ │ │ ├── TransferHeader.vue │ │ │ │ │ └── TransferStatusPanel.vue │ │ │ │ └── index.ts │ │ │ ├── chapters/ │ │ │ │ ├── Chapters.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── Export.vue │ │ │ │ │ ├── Form.vue │ │ │ │ │ └── Import.vue │ │ │ │ └── index.ts │ │ │ ├── contributors/ │ │ │ │ ├── Contributors.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── AddContribution.vue │ │ │ │ │ └── Contribution.vue │ │ │ │ └── index.ts │ │ │ ├── description/ │ │ │ │ ├── Description.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── EpisodeContent.vue │ │ │ │ │ ├── EpisodeNumber.vue │ │ │ │ │ ├── EpisodePoster.vue │ │ │ │ │ ├── EpisodeSubtitle.vue │ │ │ │ │ ├── EpisodeSummary.vue │ │ │ │ │ ├── EpisodeTitle.vue │ │ │ │ │ └── EpisodeType.vue │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── license/ │ │ │ │ ├── License.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── LicenseName.vue │ │ │ │ │ ├── LicenseSelector.vue │ │ │ │ │ ├── LicenseSelectorButton.vue │ │ │ │ │ ├── LicenseUrl.vue │ │ │ │ │ └── LicenseView.vue │ │ │ │ └── index.ts │ │ │ ├── mediafiles/ │ │ │ │ ├── MediaFiles.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── AssetsEmptyState.vue │ │ │ │ │ ├── AssetsTable.vue │ │ │ │ │ ├── MediaSlug.vue │ │ │ │ │ ├── MediaUpload.vue │ │ │ │ │ └── PlusMediaUpload.vue │ │ │ │ └── index.ts │ │ │ ├── plus_features/ │ │ │ │ ├── Feature.vue │ │ │ │ ├── PlusFeatures.vue │ │ │ │ └── index.ts │ │ │ ├── plus_file_migration/ │ │ │ │ ├── PlusFileMigration.vue │ │ │ │ └── index.ts │ │ │ ├── plus_token/ │ │ │ │ ├── PlusToken.vue │ │ │ │ ├── TokenInput.vue │ │ │ │ └── index.ts │ │ │ ├── related/ │ │ │ │ ├── RelatedEpisodes.vue │ │ │ │ └── index.ts │ │ │ ├── shows/ │ │ │ │ ├── ShowSelect.vue │ │ │ │ └── index.ts │ │ │ ├── soundbite/ │ │ │ │ ├── Soundbite.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── Clear.vue │ │ │ │ │ └── Form.vue │ │ │ │ └── index.ts │ │ │ └── transcripts/ │ │ │ ├── Transcripts.vue │ │ │ ├── components/ │ │ │ │ ├── Delete.vue │ │ │ │ ├── Export.vue │ │ │ │ ├── Import.vue │ │ │ │ ├── List.vue │ │ │ │ └── Voices.vue │ │ │ └── index.ts │ │ ├── plugins/ │ │ │ └── translations.ts │ │ ├── sagas/ │ │ │ ├── admin.sagas.ts │ │ │ ├── api.ts │ │ │ ├── auphonic.api.ts │ │ │ ├── auphonic.sagas.ts │ │ │ ├── chapters.sagas.ts │ │ │ ├── contributors.sagas.ts │ │ │ ├── episode.sagas.ts │ │ │ ├── helper.ts │ │ │ ├── lifecycle.sagas.ts │ │ │ ├── mediafiles.duration.sagas.ts │ │ │ ├── mediafiles.enable.sagas.ts │ │ │ ├── mediafiles.fileselection.sagas.ts │ │ │ ├── mediafiles.sagas.ts │ │ │ ├── mediafiles.slug.sagas.ts │ │ │ ├── mediafiles.upload.sagas.ts │ │ │ ├── mediafiles.verification.sagas.ts │ │ │ ├── notification.saga.ts │ │ │ ├── plus.sagas.ts │ │ │ ├── plusFileMigration.sagas.ts │ │ │ ├── podcast.sagas.ts │ │ │ ├── relatedEpisodes.sagas.ts │ │ │ ├── shows.sagas.ts │ │ │ ├── transcripts.sagas.ts │ │ │ └── wordpress.sagas.ts │ │ ├── store/ │ │ │ ├── admin.store.ts │ │ │ ├── auphonic.store.ts │ │ │ ├── chapters.store.ts │ │ │ ├── contributors.store.ts │ │ │ ├── episode.store.ts │ │ │ ├── index.ts │ │ │ ├── lifecycle.store.ts │ │ │ ├── mediafiles.store.ts │ │ │ ├── notification.store.ts │ │ │ ├── plus.store.ts │ │ │ ├── plusFileMigration.store.ts │ │ │ ├── podcast.store.ts │ │ │ ├── post.store.ts │ │ │ ├── progress.store.ts │ │ │ ├── reducers.ts │ │ │ ├── relatedEpisodes.store.ts │ │ │ ├── runtime.store.ts │ │ │ ├── selectors.ts │ │ │ ├── settings.store.ts │ │ │ ├── shows.store.ts │ │ │ ├── transcripts.store.ts │ │ │ ├── vue.ts │ │ │ └── wordpress.store.ts │ │ ├── style.css │ │ ├── types/ │ │ │ ├── chapters.types.ts │ │ │ ├── contributors.types.ts │ │ │ ├── episode.types.ts │ │ │ ├── license.types.ts │ │ │ ├── relatedEpisodes.types.ts │ │ │ ├── shows.types.ts │ │ │ └── transcripts.types.ts │ │ └── vue-shims.d.ts │ ├── tailwind.config.js │ ├── tsconfig.json │ ├── typings/ │ │ ├── podlove.d.ts │ │ └── redux-actions.d.ts │ └── vite.config.js ├── composer.json ├── config/ │ └── php-scoper/ │ ├── matomo.inc.php │ ├── monolog.inc.php │ ├── piwik.inc.php │ ├── psr.inc.php │ └── twig.inc.php ├── css/ │ ├── about.css │ ├── admin-font.css │ ├── admin.css │ ├── dc.css │ └── frontend.css ├── data/ │ ├── .gitkeep │ ├── opawg.json │ └── podlove_v2_schema.json ├── devbox.d/ │ └── php/ │ ├── php-fpm.conf │ └── php.ini ├── devbox.json ├── docker-compose.yml ├── includes/ │ ├── about.php │ ├── api/ │ │ ├── admin/ │ │ │ ├── onboarding.php │ │ │ └── plus.php │ │ ├── analytics.php │ │ ├── api.php │ │ ├── chapters.php │ │ ├── episodes/ │ │ │ ├── contributions.php │ │ │ └── related_episodes.php │ │ ├── episodes.php │ │ ├── feeds.php │ │ ├── podcast.php │ │ ├── show.php │ │ └── tools.php │ ├── auto_post_titles.php │ ├── cache.php │ ├── capabilities.php │ ├── chapters.php │ ├── compatibility.php │ ├── db_migration.php │ ├── deprecations.php │ ├── detect_duplicate_slugs.php │ ├── donation_banner.html.php │ ├── donation_banner.img.src │ ├── donation_banner.php │ ├── downloads.php │ ├── episode_number_column.php │ ├── episode_number_quick_edit_form.php │ ├── explicit_content.php │ ├── extras.php │ ├── feed_discovery.php │ ├── frontend_styles.php │ ├── http.php │ ├── images.php │ ├── import.php │ ├── jetpack.php │ ├── license.php │ ├── merge_episodes.php │ ├── modules.php │ ├── no_enclosure_autodiscovery.php │ ├── permalinks.php │ ├── podlove-web-player-5.php │ ├── podlove_data_js_adapter.php │ ├── recording_date.php │ ├── redirects.php │ ├── request_id_rehash.php │ ├── require_curl.php │ ├── screen_options.php │ ├── scripts_and_styles.php │ ├── search.php │ ├── setup.php │ ├── setup_wizard.php │ ├── system_report.php │ ├── template_pages.php │ ├── templates.php │ ├── theme_helper.php │ ├── trash.php │ ├── verify_itunes_category.php │ ├── webhooks.php │ └── wp_rocket.php ├── js/ │ ├── .tool-versions │ ├── admin/ │ │ ├── ace/ │ │ │ ├── ace.js │ │ │ ├── mode-twig.js │ │ │ ├── theme-chrome.js │ │ │ └── theme-github.js │ │ ├── chosen/ │ │ │ ├── chosenImage.css │ │ │ └── chosenImage.jquery.js │ │ ├── cornify.js │ │ ├── dc.js │ │ ├── jquery-ui/ │ │ │ └── css/ │ │ │ └── smoothness/ │ │ │ └── jquery-ui.css │ │ ├── spectrum/ │ │ │ ├── spectrum.css │ │ │ └── spectrum.js │ │ ├── template.js │ │ └── tools/ │ │ └── useragent.js │ ├── package.json │ ├── src/ │ │ ├── admin/ │ │ │ ├── dashboard_asset_validation.js │ │ │ ├── dashboard_feed_validation.js │ │ │ ├── episode.js │ │ │ ├── episode_asset_settings.js │ │ │ ├── feed_settings.js │ │ │ ├── jobs.js │ │ │ ├── jquery.count_characters.js │ │ │ ├── license.js │ │ │ ├── md5.js │ │ │ ├── media.js │ │ │ ├── podlove_data_table.js │ │ │ ├── post_title_autogenerate.js │ │ │ ├── protected_feed.js │ │ │ └── timeago.jquery.js │ │ ├── admin.js │ │ ├── analytics/ │ │ │ ├── common.js │ │ │ ├── episode.js │ │ │ └── totals.js │ │ ├── app.js │ │ ├── components/ │ │ │ ├── AnalyticsDatePicker.vue │ │ │ ├── JobsDashboard.vue │ │ │ ├── Shownotes.vue │ │ │ ├── ShownotesEntry.vue │ │ │ ├── Slacknotes.vue │ │ │ ├── icons/ │ │ │ │ ├── CheveronDown.vue │ │ │ │ ├── CheveronUp.vue │ │ │ │ ├── Close.vue │ │ │ │ ├── DotsVertical.vue │ │ │ │ ├── Edit.vue │ │ │ │ ├── Eye.vue │ │ │ │ ├── EyeOff.vue │ │ │ │ ├── Image.vue │ │ │ │ ├── Link.vue │ │ │ │ ├── Menu.vue │ │ │ │ ├── Refresh.vue │ │ │ │ └── Type.vue │ │ │ ├── shownotes/ │ │ │ │ ├── link-compact.vue │ │ │ │ ├── link-unfurling.vue │ │ │ │ ├── link.vue │ │ │ │ ├── sn-button.vue │ │ │ │ ├── sn-card.vue │ │ │ │ ├── suggestion.vue │ │ │ │ └── topic.vue │ │ │ └── temp.xml │ │ └── lib/ │ │ ├── duration_errors.js │ │ ├── guid.js │ │ └── timestamp.js │ └── webpack.mix.js ├── lib/ │ ├── ajax/ │ │ ├── ajax.analytics_global_total_downloads_by_show.html.php │ │ ├── ajax.php │ │ ├── file_controller.php │ │ └── template_controller.php │ ├── analytics/ │ │ ├── download_intent_cleanup.php │ │ ├── download_sums_calculator.php │ │ ├── episode_download_average.php │ │ └── salt_shaker.php │ ├── api/ │ │ ├── error.php │ │ ├── permissions.php │ │ ├── response.php │ │ └── validation.php │ ├── authentication.php │ ├── cache/ │ │ ├── http_header_validator.php │ │ └── template_cache.php │ ├── chapters_manager.php │ ├── comment/ │ │ └── comment.php │ ├── cron.php │ ├── custom_guid.php │ ├── delete_head_requests.php │ ├── dom_document_fragment.php │ ├── downloads.php │ ├── downloads_list_data.php │ ├── downloads_list_table.php │ ├── duplicate_post.php │ ├── duration.php │ ├── episode_asset_list_table.php │ ├── feed_list_table.php │ ├── feeds/ │ │ ├── base.php │ │ ├── chapters.php │ │ └── rss.php │ ├── feeds.php │ ├── file_type_list_table.php │ ├── form/ │ │ └── input/ │ │ ├── builder.php │ │ ├── div_wrapper.php │ │ ├── table_wrapper.php │ │ └── wrapper.php │ ├── geo_ip.php │ ├── has_page_documentation_trait.php │ ├── helper.php │ ├── http/ │ │ └── curl.php │ ├── jobs/ │ │ ├── counting_job.php │ │ ├── cron_job_runner.php │ │ ├── download_intent_cleanup_job.php │ │ ├── download_timed_aggregator_job.php │ │ ├── job_cleaner.php │ │ ├── job_trait.php │ │ ├── request_id_rehash_job.php │ │ ├── tools_section.php │ │ ├── tools_section_cron_diagnostics.php │ │ └── user_agent_refresh_job.php │ ├── list_table.php │ ├── log.php │ ├── model/ │ │ ├── asset_assignment.php │ │ ├── base.php │ │ ├── download_intent.php │ │ ├── download_intent_clean.php │ │ ├── episode.php │ │ ├── episode_asset.php │ │ ├── feed.php │ │ ├── file_type.php │ │ ├── geo_area.php │ │ ├── geo_area_name.php │ │ ├── image.php │ │ ├── job.php │ │ ├── keeps_blog_reference_trait.php │ │ ├── licensable.php │ │ ├── license.php │ │ ├── media_file.php │ │ ├── network_trait.php │ │ ├── podcast.php │ │ ├── template.php │ │ ├── template_assignment.php │ │ └── user_agent.php │ ├── modules/ │ │ ├── affiliate/ │ │ │ ├── affiliate.php │ │ │ └── podcast_affiliate_settings_tab.php │ │ ├── analytics_heartbeat/ │ │ │ ├── analytics_heartbeat.php │ │ │ └── model/ │ │ │ └── heartbeat.php │ │ ├── asset_validation/ │ │ │ └── asset_validation.php │ │ ├── auphonic/ │ │ │ ├── api_wrapper.php │ │ │ ├── auphonic.php │ │ │ ├── episode_enhancer.php │ │ │ ├── plus_file_transfer.php │ │ │ └── rest_api.php │ │ ├── automatic_numbering/ │ │ │ └── automatic_numbering.php │ │ ├── base.php │ │ ├── categories/ │ │ │ └── categories.php │ │ ├── contributors/ │ │ │ ├── contributor_group_list_table.php │ │ │ ├── contributor_list_table.php │ │ │ ├── contributor_repair.php │ │ │ ├── contributor_role_list_table.php │ │ │ ├── contributors.php │ │ │ ├── gender_stats.php │ │ │ ├── jobs/ │ │ │ │ ├── podcast_import_contributor_episode_contributions_job.php │ │ │ │ ├── podcast_import_contributor_groups_job.php │ │ │ │ ├── podcast_import_contributor_roles_job.php │ │ │ │ ├── podcast_import_contributor_show_contributions_job.php │ │ │ │ └── podcast_import_contributors_job.php │ │ │ ├── js/ │ │ │ │ └── admin.js │ │ │ ├── model/ │ │ │ │ ├── contribution_gender_statistics.php │ │ │ │ ├── contributor.php │ │ │ │ ├── contributor_group.php │ │ │ │ ├── contributor_role.php │ │ │ │ ├── default_contribution.php │ │ │ │ ├── episode_contribution.php │ │ │ │ └── show_contribution.php │ │ │ ├── rest_api.php │ │ │ ├── settings/ │ │ │ │ ├── contributor_defaults.php │ │ │ │ ├── contributor_settings.php │ │ │ │ ├── generic_entity_settings.php │ │ │ │ ├── podcast_contributors_settings_tab.php │ │ │ │ └── tab/ │ │ │ │ ├── contributors.php │ │ │ │ ├── defaults.php │ │ │ │ ├── groups.php │ │ │ │ └── roles.php │ │ │ ├── shortcodes.php │ │ │ ├── template/ │ │ │ │ ├── avatar.php │ │ │ │ ├── contributor.php │ │ │ │ └── contributor_group.php │ │ │ ├── template_extensions.php │ │ │ ├── templates/ │ │ │ │ ├── _contributor-table-flattr.twig │ │ │ │ ├── _contributor-table-row.twig │ │ │ │ ├── avatar.twig │ │ │ │ ├── contributor-comma-separated.twig │ │ │ │ ├── contributor-list.twig │ │ │ │ ├── contributor-table.twig │ │ │ │ ├── podcast-contributor-list.twig │ │ │ │ └── podcast-contributor-table.twig │ │ │ └── views/ │ │ │ └── form_table.php │ │ ├── external_analytics/ │ │ │ └── external_analytics.php │ │ ├── fyyd/ │ │ │ └── fyyd.php │ │ ├── import_export/ │ │ │ ├── export/ │ │ │ │ ├── podcast_exporter.php │ │ │ │ └── tracking_exporter.php │ │ │ ├── import/ │ │ │ │ ├── podcast_import_assets_job.php │ │ │ │ ├── podcast_import_episodes_job.php │ │ │ │ ├── podcast_import_feeds_job.php │ │ │ │ ├── podcast_import_filetypes_job.php │ │ │ │ ├── podcast_import_job_table_trait.php │ │ │ │ ├── podcast_import_job_trait.php │ │ │ │ ├── podcast_import_mediafiles_job.php │ │ │ │ ├── podcast_import_options_job.php │ │ │ │ ├── podcast_import_templates_job.php │ │ │ │ ├── podcast_import_tracking_area_job.php │ │ │ │ ├── podcast_import_tracking_area_name_job.php │ │ │ │ ├── podcast_import_user_agents_job.php │ │ │ │ ├── podcast_importer.php │ │ │ │ ├── podcast_importer_job.php │ │ │ │ ├── tracking_importer.php │ │ │ │ └── tracking_importer_job.php │ │ │ ├── import_export.php │ │ │ └── js/ │ │ │ └── import.js │ │ ├── logging/ │ │ │ ├── log_table.php │ │ │ ├── logging.php │ │ │ ├── wpdbhandler.php │ │ │ └── wpmail_handler.php │ │ ├── networks/ │ │ │ ├── admin_bar_menu.php │ │ │ ├── css/ │ │ │ │ └── admin.css │ │ │ ├── model/ │ │ │ │ ├── network.php │ │ │ │ └── podcast_list.php │ │ │ ├── networks.php │ │ │ ├── podcast_list_list_table.php │ │ │ ├── podcast_list_table.php │ │ │ ├── settings/ │ │ │ │ ├── dashboard.php │ │ │ │ ├── podcast_lists.php │ │ │ │ └── templates.php │ │ │ └── template/ │ │ │ ├── network.php │ │ │ └── podcast_list.php │ │ ├── notifications/ │ │ │ ├── mailer_job.php │ │ │ ├── notifications.php │ │ │ └── settings_tab.php │ │ ├── oembed/ │ │ │ └── oembed.php │ │ ├── onboarding/ │ │ │ ├── css/ │ │ │ │ └── podlove-onboarding-banner.css │ │ │ ├── onboarding.php │ │ │ ├── rest_api.php │ │ │ └── settings/ │ │ │ └── onboarding_page.php │ │ ├── open_graph/ │ │ │ └── open_graph.php │ │ ├── plus/ │ │ │ ├── api.php │ │ │ ├── banner.html.php │ │ │ ├── banner.php │ │ │ ├── early_file_hosting_banner.php │ │ │ ├── feed_proxy.php │ │ │ ├── feed_pusher.php │ │ │ ├── file_storage.php │ │ │ ├── global_feed_settings.php │ │ │ ├── growth_banner.php │ │ │ ├── plus.php │ │ │ ├── promotion_coordinator.php │ │ │ ├── rest_api.php │ │ │ └── settings_page.php │ │ ├── podlove_web_player/ │ │ │ ├── media_tag_renderer.php │ │ │ ├── player_printer_interface.php │ │ │ ├── player_v3/ │ │ │ │ └── player_media_files.php │ │ │ ├── player_v4/ │ │ │ │ ├── html5printer.php │ │ │ │ ├── module.php │ │ │ │ └── pwp4.js │ │ │ ├── player_v5/ │ │ │ │ └── module.php │ │ │ ├── podigee/ │ │ │ │ ├── html5printer.php │ │ │ │ └── module.php │ │ │ └── podlove_web_player.php │ │ ├── protected_feed/ │ │ │ └── protected_feed.php │ │ ├── pubsubhubbub/ │ │ │ └── pubsubhubbub.php │ │ ├── readme.md │ │ ├── related_episodes/ │ │ │ ├── js/ │ │ │ │ └── admin.js │ │ │ ├── model/ │ │ │ │ └── episode_relation.php │ │ │ ├── related_episodes.php │ │ │ ├── shortcodes.php │ │ │ ├── template_extensions.php │ │ │ └── templates/ │ │ │ └── related-episodes-list.twig │ │ ├── seasons/ │ │ │ ├── css/ │ │ │ │ └── admin.css │ │ │ ├── js/ │ │ │ │ └── admin.js │ │ │ ├── model/ │ │ │ │ ├── season.php │ │ │ │ ├── season_map.php │ │ │ │ ├── seasons_issue.php │ │ │ │ └── seasons_validator.php │ │ │ ├── podcast_import_seasons_job.php │ │ │ ├── seasons.php │ │ │ ├── settings/ │ │ │ │ ├── help/ │ │ │ │ │ └── settings.php │ │ │ │ ├── season_list_table.php │ │ │ │ └── settings.php │ │ │ ├── template/ │ │ │ │ └── season.php │ │ │ └── template_extensions.php │ │ ├── shownotes/ │ │ │ ├── model/ │ │ │ │ └── entry.php │ │ │ ├── rest_api.php │ │ │ ├── shownotes.php │ │ │ ├── template/ │ │ │ │ └── entry.php │ │ │ ├── template_extensions.php │ │ │ └── twig/ │ │ │ ├── plain-html-list-grouped.twig │ │ │ ├── plain-html-list.twig │ │ │ └── shownotes.twig │ │ ├── shows/ │ │ │ ├── js/ │ │ │ │ └── admin.js │ │ │ ├── model/ │ │ │ │ └── show.php │ │ │ ├── rest_api.php │ │ │ ├── settings/ │ │ │ │ ├── help/ │ │ │ │ │ └── settings.php │ │ │ │ ├── settings.php │ │ │ │ └── show_list_table.php │ │ │ ├── shows.php │ │ │ ├── template/ │ │ │ │ └── show.php │ │ │ └── template_extensions.php │ │ ├── slack_shownotes/ │ │ │ ├── message.php │ │ │ ├── settings/ │ │ │ │ └── settings.php │ │ │ └── slack_shownotes.php │ │ ├── social/ │ │ │ ├── admin.css │ │ │ ├── data/ │ │ │ │ └── services.yml │ │ │ ├── jobs/ │ │ │ │ ├── podcast_import_contributor_services_job.php │ │ │ │ ├── podcast_import_services_job.php │ │ │ │ └── podcast_import_show_services_job.php │ │ │ ├── js/ │ │ │ │ └── admin.js │ │ │ ├── model/ │ │ │ │ ├── contributor_service.php │ │ │ │ ├── service.php │ │ │ │ └── show_service.php │ │ │ ├── repair_social.php │ │ │ ├── rest_api.php │ │ │ ├── settings/ │ │ │ │ ├── podcast_settings_donation_tab.php │ │ │ │ └── podcast_settings_social_tab.php │ │ │ ├── shortcodes.php │ │ │ ├── social.php │ │ │ ├── template/ │ │ │ │ └── service.php │ │ │ ├── template_extensions.php │ │ │ └── templates/ │ │ │ ├── podcast-donations-list.twig │ │ │ └── podcast-social-media-list.twig │ │ ├── soundbite/ │ │ │ └── soundbite.php │ │ ├── subscribe_button/ │ │ │ ├── button.php │ │ │ ├── js/ │ │ │ │ └── admin.js │ │ │ ├── subscribe_button.php │ │ │ ├── template_extensions.php │ │ │ └── widget.php │ │ ├── title_migration/ │ │ │ ├── notices.php │ │ │ ├── state.php │ │ │ └── title_migration.php │ │ ├── transcripts/ │ │ │ ├── jobs/ │ │ │ │ ├── import_transcripts_job.php │ │ │ │ └── import_voice_assignments_job.php │ │ │ ├── model/ │ │ │ │ ├── transcript.php │ │ │ │ └── voice_assignment.php │ │ │ ├── renderer.php │ │ │ ├── rest_api.php │ │ │ ├── template/ │ │ │ │ ├── group.php │ │ │ │ └── line.php │ │ │ ├── template_extensions.php │ │ │ ├── transcripts.php │ │ │ └── twig/ │ │ │ └── transcript.twig │ │ ├── widgets/ │ │ │ ├── widgets/ │ │ │ │ ├── podcast_information.php │ │ │ │ ├── podcast_license.php │ │ │ │ ├── recent_episodes.php │ │ │ │ └── render_template.php │ │ │ └── widgets.php │ │ └── wordpress_file_upload/ │ │ └── wordpress_file_upload.php │ ├── network.php │ ├── php/ │ │ ├── array.php │ │ └── string.php │ ├── php_deprecation_warning.php │ ├── podcast_post_meta_box.php │ ├── podcast_post_type.php │ ├── repair.php │ ├── settings/ │ │ ├── analytics.php │ │ ├── dashboard/ │ │ │ ├── about.php │ │ │ ├── file_validation.php │ │ │ ├── news.php │ │ │ └── statistics.php │ │ ├── dashboard.php │ │ ├── episode_asset.php │ │ ├── expert/ │ │ │ ├── tab/ │ │ │ │ ├── file_types.php │ │ │ │ ├── metadata.php │ │ │ │ ├── redirects.php │ │ │ │ ├── tracking.php │ │ │ │ ├── web_player.php │ │ │ │ └── website.php │ │ │ ├── tab.php │ │ │ └── tabs.php │ │ ├── feed.php │ │ ├── file_type.php │ │ ├── help/ │ │ │ ├── analytics.php │ │ │ ├── dashboard.php │ │ │ ├── episode_asset.php │ │ │ ├── feed.php │ │ │ ├── modules.php │ │ │ ├── podcast.php │ │ │ ├── settings.php │ │ │ ├── support.php │ │ │ └── templates.php │ │ ├── modules.php │ │ ├── podcast/ │ │ │ ├── tab/ │ │ │ │ ├── description.php │ │ │ │ ├── directory.php │ │ │ │ ├── license.php │ │ │ │ ├── media.php │ │ │ │ └── player.php │ │ │ └── tab.php │ │ ├── podcast.php │ │ ├── settings.php │ │ ├── support.php │ │ ├── templates.php │ │ ├── tools/ │ │ │ └── user_agent_refresh.php │ │ └── tools.php │ ├── shortcodes.php │ ├── slug_freeze.php │ ├── system_report.php │ ├── template/ │ │ ├── asset.php │ │ ├── category.php │ │ ├── chapter.php │ │ ├── date_time.php │ │ ├── duration.php │ │ ├── episode.php │ │ ├── episode_title.php │ │ ├── feed.php │ │ ├── file.php │ │ ├── file_type.php │ │ ├── image.php │ │ ├── license.php │ │ ├── podcast.php │ │ ├── tag.php │ │ ├── twig_date_extension.php │ │ ├── twig_filter.php │ │ ├── twig_loader_podlove_database.php │ │ ├── twig_sandbox.php │ │ └── wrapper.php │ ├── tools.php │ ├── tracking/ │ │ └── debug.php │ ├── version.php │ └── webhook/ │ └── webhook.php ├── license.txt ├── mise.toml ├── package.json ├── phpunit.xml.dist ├── plugin.php ├── podlove.php ├── readme.txt ├── templates/ │ ├── feed-rss2.php │ ├── license.twig │ ├── network/ │ │ └── network-bar.twig │ └── shortcode/ │ ├── downloads-buttons.twig │ ├── downloads-select.twig │ ├── episode-list.twig │ └── feed-list.twig ├── tests/ │ └── phpunit/ │ ├── bootstrap.php │ ├── helpers/ │ │ ├── EpisodeFactory.php │ │ ├── db.php │ │ └── module.php │ ├── integration/ │ │ ├── FeedHtmlOptimizationTest.php │ │ ├── ModuleUninstallTest.php │ │ ├── PluginActivationTest.php │ │ ├── PlusFeedProxyTest.php │ │ ├── SeasonsTest.php │ │ ├── SeasonsValidatorTest.php │ │ └── SlackMessageTest.php │ └── rest/ │ └── EpisodesApiTest.php ├── vetur.config.js └── views/ ├── expert_settings/ │ └── website/ │ ├── blog_post_title.php │ ├── custom_episode_slug.php │ ├── episode_archive.php │ └── landing_page.php └── settings/ └── dashboard/ ├── about.php ├── dashboard.php ├── file_validation.php ├── news.php └── statistics.php