forked from podlove/podlove-publisher
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
2053 lines (1501 loc) · 109 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
= 2.7.24 =
* update Podlove Web Player 4
= 2.7.23 =
* **slacknotes:** is now accessible to authors and editors
* update some PHP dependencies (including Twig)
* add ability to specify visible components in Podlove Web Player V4 ([#1032](https://github.com/podlove/podlove-publisher/pull/1032))
= 2.7.22 =
* (maybe) fix Gutenberg issues when creating a new episode
= 2.7.21 =
**Bug Fixes**
* **slacknotes:** avoid duplicate vue for-loop keys ([7578cdf](https://github.com/podlove/podlove-publisher/commit/7578cdf))
* **slacknotes:** date range filter ([2982f2b](https://github.com/podlove/podlove-publisher/commit/2982f2b))
* **slacknotes:** fix loading of datepicker component ([13ca12b](https://github.com/podlove/podlove-publisher/commit/13ca12b))
* **slacknotes:** follow redirects when resolving URLs ([5b39746](https://github.com/podlove/podlove-publisher/commit/5b39746))
* **slacknotes:** handle slack-resolved URLs in pipes format ([b08ec53](https://github.com/podlove/podlove-publisher/commit/b08ec53))
* **slacknotes:** hide link-fetch prompt while fetching ([f4e78e3](https://github.com/podlove/podlove-publisher/commit/f4e78e3))
* **slacknotes:** url re-fetching when changing dates ([344456d](https://github.com/podlove/podlove-publisher/commit/344456d))
**Features**
* **slacknotes:** add setting for link ordering ([c4c824e](https://github.com/podlove/podlove-publisher/commit/c4c824e))
* **slacknotes:** show link time ([53077b1](https://github.com/podlove/podlove-publisher/commit/53077b1))
* **slacknotes:** when resolving URLs, use effective URL ([974c7f8](https://github.com/podlove/podlove-publisher/commit/974c7f8))
= 2.7.20 =
**Slacknotes**
This release is sponsored by [Lage der Nation](https://lagedernation.org).
The new "Slacknotes" module extracts links and their metadata from a Slack channel and generates HTML that can be used as show notes.
A short demo video is available [in the documentation](https://docs.podlove.org/podlove-publisher/guides/slacknotes.html).
**Other**
* the "Modules" screen has been redesigned
* updated JavaScript and CSS processing library and other dependencies
= 2.7.19 =
We are now compatible to the new WordPress 5.0 Gutenberg block editor.
You can choose to use the new editor or stay with the classic editor for now by installing the classic editor plugin by WordPress.
* feed: do not include `<itunes:summary>` tag if it is empty (Apple Podcast requirement)
* adjustments for Gutenberg compatibility:
* Shows metabox moved from sidebar to main area
* remove broken form field autogrow behavior
* fix contributors UI initialization
= 2.7.18 =
* improve feed generation time when seasons are used ([#1010](https://github.com/podlove/podlove-publisher/issues/1010))
* title migration module:
* remove "episode type" selector, always use "full"
* add warning when there might be too many form fields
* new PHP constant `PODLOVE_DISABLE_TAG_AND_CATEGORY_SEARCH` ([#1017](https://github.com/podlove/podlove-publisher/issues/1017))
* feed item limit: "1" is now an option
* add missing contributor template accessors: organisation, department, jobtitle
* ensure Gutenberg editor is not used for episodes
= 2.7.17 =
**Downloads Data Export**
Download data per episode can now be exported as JSON and CSV.
On the Analytics page you will now find a simple export interface.
Select the episodes you want in the export or don't select any to export them all at once.
**WP REST API Support**
Backbone for the data export is an implementation of the WP REST API.
Endpoint for the episode custom post type:
- /wp-json/wp/v2/episodes
Custom endpoints for episode analytics:
- /wp-json/podlove/v1/analytics/episodes/
- /wp-json/podlove/v1/analytics/episodes/123
- /wp-json/podlove/v1/analytics/episodes/123,82
All analytics are available as CSV by adding `?format=csv` as parameter, for example `/wp-json/podlove/v1/analytics/episodes/?format=csv`
Analytics endpoints require the `podlove_read_analytics` permission, the same as viewing analytics in the admin.
Please read https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/ if you want to use these endpoints.
**Other**
* Fix deprecation warning when using multiple categories ([#1009](https://github.com/podlove/podlove-publisher/pull/1009))
= 2.7.16 =
* update Podlove Web Player 4
= 2.7.15 =
* automatically abort stuck background jobs
* contributors now appear in feeds even if they don't have a URI [#939](https://github.com/podlove/podlove-publisher/issues/939#issuecomment-430248520)
* Shows: custom language is now used for Podlove Subscribe Button
= 2.7.14 =
* update Podlove Web Player 4
= 2.7.12/13 =
* use wp_enqueue_script instead of inline JS when calling PWP4, improving compatibility to other plugins ([#1000](https://github.com/podlove/podlove-publisher/issues/1000))
* uninstall: be more specific which options are deleted ([#997](https://github.com/podlove/podlove-publisher/issues/997))
* new filter `podlove_network_module_activate` to force-enable network module ([#995](https://github.com/podlove/podlove-publisher/issues/995))
* new social services: Mastodon, Fediverse, Friendica ([#987](https://github.com/podlove/podlove-publisher/issues/987), [#968](https://github.com/podlove/podlove-publisher/issues/968))
* fix related episodes disappearing when using post scheduling ([#980](https://github.com/podlove/podlove-publisher/issues/980))
* fix seasons error when there are no episodes ([#963](https://github.com/podlove/podlove-publisher/issues/963))
* related episodes: order by post date ([#947](https://github.com/podlove/podlove-publisher/issues/947))
= 2.7.10/11 =
* update Analytics JS frameworks, fixing [#982](https://github.com/podlove/podlove-publisher/issues/982)
* add download location analytics chart
* remove weekday chart
* add option to disable average episode display
= 2.7.9 =
Too much slimming in 2.7.8. Undo.
= 2.7.8 =
* fix release workflow
* slim down plugin size by removing unnecessary files from release
* update Podlove Web Player 4
= 2.7.7 =
Update 2.7.5 changed the way download tracking works to comply with GDPR. We tried the radical approach and anonymized IPs. As it turns out, this is not viable. Download numbers are skewed by this change and often much lower than they realistically should be. If you saw a drop in downloads since updating to 2.7.5 or 2.7.6, this is the reason.
The good news is that this update changes download tracking again and new download numbers should get back to normal. The bad news is that the data since the GDPR update cannot be fixed/restored because it's missing data granularity -- which was the point of the change; just not anitcipating the effect on the actual download numbers.
So what's the new tracking approach?
Podlove Publisher now stores the `request_id` again just like before the update: a hash based on the actual IP address and the user agent. What's new is that now once a day, all `request_id`s older than 24 hours are salted again, making it impossible to restore IPs from them. This 24 hour window is enough to determine download numbers exactly as before the GDPR update.
To be clear, IPs are never stored in plain text. But since IPs could be restored by brute force attack from the temporary unsalted `request_id` hashes, they have to be treated like plain IPs. The text snippet for your privacy page has been updated in the docs and you should update it on your site: https://docs.podlove.org/podlove-publisher/guides/dsgvo-gdpr.html
= 2.7.6 =
No changes.
= 2.7.5 =
**Preparation for GDPR/DSGVO**
If you are using Podlove Publisher Tracking/Analytics, an update to this version is highly recommended.
Tracking uses a `request_id` to be able to determine when two requests came from the same user and should be counted as one unique access. This request id used to be a hash of the original IP address and the user agent. This approach however is vulnerable to a brute force attack to get the IP address back from the hash. Here's what we are doing about that:
First, we anonymize the IP before generating the hash. So instead of using `171.23.11.209`, we use `171.23.11.0`.
Second, you need to deal with the existing `request_id`s. There is a new "DSGVO" section under "Tools" with a button that will rehash all existing `request_id`s with a randomly generated salt. That way it will become unfeasible to determine the original IP address but your analytics will stay the same.
In case you have a lot of downloads (let's say much more than 50.000), you may want to do this via command line because that will be _much_ quicker than via the tools section. You need [wp-cli](https://wp-cli.org/), then simply call `wp eval 'podlove_rehash_tracking_request_ids();'`. On a multisite, pass the blog id as a parameter: `wp eval 'podlove_rehash_tracking_request_ids(42);'`.
**Other**
* fix Podlove Subscribe Button language parameter
* fix `rel="self"` link in show feeds
* fix Podlove Subscribe Button not delivering show feeds
* templates: handle episode.show access when there is no show
* templates: allow episode filtering by show, for example: `{% for episode in podcast.episodes({show: "example"}) %}`
= 2.7.4 =
No changes, but the previous release is not delivered correctly by WordPress, so this is simply a re-release attempt to fix it.
= 2.7.3 =
* fix: geo database updater
* update Podlove Web Player 2: remove Flash Fallback
* update Podlove Web Player 4
= 2.7.2 =
* fix: `itunes:image` tag in show feeds
* fix: "Debug Tracking" choosing wrong media files to check availability
* enhancement: "Debug Tracking" now suggests disabling SSL-peer-verification if URL cannot be resolved and https is used
* system report: include active plugins
= 2.7.1 =
* fix: PHP warning when the_title filter is called with only one parameter
* fix: handle colons in migration tool
* fix: PWP4 warning when using shortcode
* new service: letterboxd
= 2.7.0 =
**New Module: Shows**
With shows you can offer feeds to subtopics of your podcast. Here's how it works: You create a show and define show meta, similar to a podcast: title, slug, subtitle, summary, image and language. These fields override your podcast settings. All other settings are the same as your podcast.
For each episode, you decide which show it's in. Each show has its own set of feeds that listeners can subscribe to. The main feed remains unchanged, containing all episodes from all shows.
The Podlove Subscribe Button can be configured to subscribe to a show by referencing the show slug. Use the shortcode `[podlove-subscribe-button show="show-slug"]` or the template tag `{ podcast.subscribeButton({show: 'show-slug'}) }}`.
We do not recommend using Shows and Seasons at the same time.
**Updated Metadata for Podcast/Episode/Seasons according to iOS11 Specification**
Apple announced an [updated specification for feed elements](http://podcasts.apple.com/resources/spec/ApplePodcastsSpecUpdatesiOS11.pdf). These changes enable the Apple Podcasts app to present podcasts in a better way. But since these feed extensions are readable by any podcast client, we expect others to take advantage of these new fields soon. Here is how we implemented the specification:
- The podcast has a new "type" field where you can select between "episodic" and "serial", which may affect the order of episodes. The field `<itunes:type>episodic</itunes:type>` appears in the feed.
- Episodes have a new "title" field. It defaults to the episode post title but can be set separately now, allowing you to define different titles for the website and podcast clients. The field `<itunes:title>Interview with Somebody Infamous</itunes:title>` will appear in the feed.
- Episodes have a new "type" field where you can select between "full" (default), "trailer" and "bonus". This won't have any effect in the Publisher but may be used by podcast clients. The field `<itunes:episodeType>full</itunes:episodeType>` appears in the feed.
- Episodes have a new "number" field. If used, `<itunes:episode>42</itunes:episode>` will appear in the feed.
- Episodes in seasons will have an `<itunes:season>2</itunes:season>` field in the feed automatically.
We decided to complement these changes by introducing a podcast mnemonic/abbreviation field. Now we can autogenerate blog episode titles, based on the episode number and title, if you like. The mnemonic can be set in podcast settings. The setting to autogenerate blog episode titles is an expert setting in the "Website" section.
To help existing podcasts to conform to these new fields we made a "Title Migration" module which will greet you with a notice once you update the Publisher. It will try to extract episode numbers and titles from your existing titles, saving you time and effort updating each episode one by one.
**Template API Changes**
- `episode.title` now returns the new episode title field, if it is set, but has a fallback to the post title. If you want a specific version, use `episode.title.clean` or `episode.title.blog`.
- the post title of an episode can still be accessed via `episode.post.post_title`
- new accessor: `episode.number`
- new accessor: `episode.type`
- new accessor: `podcast.mnemonic`
- new accessor: `podcast.type`
- new accessor: `season.mnemonic`
**Podlove Web Player 4**
The Shortcode `[podlove-web-player]` accepts several parameters, increasing its versatility.
With `post_id` you can embed episodes on any page, for example `[podlove-web-player post_id="1234"]`.
Every [config parameter available](http://docs.podlove.org/podlove-web-player/config.html) can be overridden using shortcode attributes. The only difference from the linked documentation page is the notation. For nested configs like `show.title` use underscores (`_`) instead. For example, display a green player with custom title like this: `[podlove-web-player show_title="Special Title" theme_main="#00ff00"]`
You can now also display a player with _live content_ like this: `[podlove-web-player mode="live" audio_0_url="http://mp3.theradio.cc/" audio_0_mimeType="audio/mp3" title="Livestream" link="https://theradio.cc"]`
You can choose to deliver Podlove Player via Podlove CDN (Content Delivery Network) or via your WordPress server. CDN is the default for new setups but if you are already using Podlove Publisher we continue delivering Podlove Player via your WordPress server unless you explicitly change it.
Podlove Web Player 4 is the new default player.
**Other**
* analytics: show download totals for last 24 hours and last 7 days in overview
* Podigee Player: add support for transcripts
- create a Podigee Transcript asset
- set this asset in Expert Settings > Web Player
- See https://cdn.podigee.com/ppp/samples/transcript.txt for an example transcript
* Podlove Web Player 4: support contributors
* player settings: when no episode or files are available, use a "Podlove" demo sound
* reduce Podlove Template Cache duration from 1 day to 1 hour for the following change:
* new template accessor: `{{ episode.total_downloads }}`
* New in "Global Feed Settings": An option for how the episode title should be displayed. It defaults to "Blog Post Title", so that after the iOS 11 title migration, the output does not actually change -- following the principle of least surprise. However, the setting can be changed to "Episode Title", which is the new clean title, or "Custom Template", which is a title template with the same capabilities as the blog post title template.
* when using the Podlove Subscribe Button CDN and the CDN is not reachable, fall back to the locally hosted script
* fix Geo DB Updater: use our own Podlove CDN as download source
* fix quotes in contributor fields
* fix WordPress conditionals in episode archives
* fix deleting related episodes ([#907](https://github.com/podlove/podlove-publisher/issues/907))
* fix network admin bar now does not include broken links if Publisher is not activated network-wide ([#933](https://github.com/podlove/podlove-publisher/issues/933))
* fix import getting stuck issue ([#910](https://github.com/podlove/podlove-publisher/issues/910))
* Bitlove module: remove all frontend functionality because it has been dysfunctional for a long time
* fix Auphonic module showing wrong status message after file upload
* fix Audacity chapter import when times contain commas
* fix email notification issue where not emails were sent ([#938](https://github.com/podlove/podlove-publisher/issues/938))
* fix feed redirect issue for HTTP/1.0 clients
* fix network module: only activate when the plugin is activated network-wide, not when the plugin in active within a multisite
* fix calculation of contribution counts
* Fix various issues in the download table display. Until now, new downloads were calculated hourly, which provides a good estimate but often not exact numbers. The calculation could also get stuck, leading to missing data display. From now on, the estimates are still calculated hourly but additionally _a full, precise aggregation is done once a day_, which should lead to more consistent numbers overall.
* enhance email error reporting
* enhance open graph module: detects WP SEO plugin and does not output any tags to avoid conflicts
* social services: add SlideShare
* show warning if upload directory is not fully qualified
* remove download section from default template (because it is included in PWP4)
* image cache: instead of returning invalid URLs with 0 width and 0 height when something goes wrong, return the source URL instead
* episode list: add display option to display episode number as a column
add Liberapay as donation service
* display current season in episode form
= 2.6.4 =
Podlove Web Player 2:
- fix: Remove Flash and Silverlight fallbacks due to security issue
- fix: resolve compatibility issue with mediaelement library shipped with WordPress
Podlove Web Player 4:
- fix: newlines in summary are not converted to HTML linebreaks
= 2.6.3 =
- new PHP constant `PODLOVE_IMAGE_CACHE_FORCE_DYNAMIC_URL`: When `PODLOVE_IMAGE_CACHE_FORCE_DYNAMIC_URL` is set to `true`, the static "physical" URL is never exposed, only the dynamic URL. This can be helpful when page caches keep serving the static URL even though it does not exist for some reason. The dynamic URL always works. Drawback is that serving with the dynamic URL is a bit slower, so only use it if you encounter caching issues.
- update mediaelement dependency in Podlove Web Player 2
- update Podlove Web Player 4
= 2.6.2 =
- send `HTTP 410 Gone` when accessing a download URL to a depublished episode
- fix Podlove Web Player 4 appearing on wrong positions when multiple players are embedded on the same page
= 2.6.1 =
- fix template bug (when a template returned an empty result, the template title was displayed instead)
**Flattr**
- rename "Flattr Username" to "Flattr ID"
- insert `flattr:id` meta tag to page heads, which is required for their new system
= 2.6.0 =
**New Module: E-Mail Notifications**
This is a new module complementing the existing contributor module. Once activated, it enables you to send emails to contributors when an episode gets published.
You can find the settings at `Contributors > E-Mail Notifications`. The settings are:
- _email subject and message_, customizable with all available template tags
- a _time delay_ until the message is sent after the episode was published
- who will receive the message by using _groups and roles as a filter_
**Podlove Web Player 4 Alpha**
After months of work we're ready to show you what we're working on: A new take on the modern Web Player. We learned from previous attempts and thought about responsiveness and embeddability from day one. Of course there's full support for chapter marks, too.
Give it a try if you like. Be aware though that it's marked as _alpha_, meaning we're still working on new features and fixing bugs in existing ones when we find them. But if you're curious, head over to `Podlove > Podcast Settings > Player`, switch to Podlove Web Player 4 and [let us know what you think](https://community.podlove.org/c/podlove-web-player).
Once Podlove Web Player 4 is stable, it will be the only actively supported Podlove Player. Podlove Web Player 3 isn't being developed anymore.
And finally, all web players can now be previewed on the settings screen.
**Templates**
* Assets now have an identifier `asset.id` to quickly access a file for an asset within an episode, for example: `episode.file("mp3")`
* Contributors already had such an id, but now there is a new accessor to get a single contributor by id, for example: `podcast.contributor("jerry")`
* DEPRECATED: id parameter in `podcast.contributors` to access a single contributor: `podcast.contributors({id: "jerry"})`.
* Feeds can now be accessed the same way by their slug: `podcast.feed("mp3")`
**Analytics**
Download tracking is now turned on by default in new setups.
**Bits & Pieces**
* network dashboard statistics: fix average length and file size; remove "days between episodes"
* episodes: prettify "detect episode duration" UI
* episodes: enhance media file UI:
* rename "update" button to "verify"
* move "update all media files" button above "verify" buttons and rename it to "verify all"
* show file URL even if url cannot be reached
* show Bytes in human readable format
* episodes: fix focus when adding contributors to episodes
* episode asset settings: increase assets per page from 10 to 100
* episode asset settings: fix format filtering by type
* episode assets: new "name" attribute for reference in templates, for example `episode.file('cover').url` where "cover" is the asset name
* support page: add Publisher icon to "Get Professional Support" callout
* contributors: services only get deleted on "Save Changes", not immediately
* contributors: fix sorting by contribution count in the admin interface
* contributors: fix minor PHP issue when creating new contributors
* templates: immediately purge cache on updating any template
* Podlove Subscribe Button: add module option to deliver locally instead of using the CDN, but continue to default to CDN
* job dashboard: add mode description to jobs where necessary to distinguish between different run settings
* be tolerant to missing PHP iconv module
* fix Auphonic chapter import
* update Hindenburg chapter parser
* new PHP constant `PODLOVE_DISABLE_IMAGE_CACHE` to disable image caching
* fix security vulnerability (thanks to DefenseCode, who found the vulnerability using their tool ThunderScan and kindly approached us)
= 2.5.3 =
* fix broken settings tabs (introduced by German translation)
= 2.5.2 =
* fix episode sorting by recording date (`podcast.episodes({orderby: 'recordingDate'})`)
* services: use https URLs where available ([#911](https://github.com/podlove/podlove-publisher/pull/911))
* services: add Spreaker ([#912](https://github.com/podlove/podlove-publisher/pull/912))
* contributors: adjust description of "Public Name" because it was misleading ([#914](https://github.com/podlove/podlove-publisher/pull/914))
* services: fix URL encoding issue ([#915](https://github.com/podlove/podlove-publisher/pull/915))
* network: fix system report notice that ensures module is setup correctly ([#916](https://github.com/podlove/podlove-publisher/pull/916))
* remove ADN link from support page
= 2.5.1 =
**Enhance Chapter UI**
* fix encoding of "&" character
* add support for Hindenburg project files
= 2.5.0 =
**New Chapter Management UI**
Until now if you wanted to add chapters to your podcast, you had to write the mp4chaps format by hand into a textfield. The Publisher now finally provides an easy-to-use interface to manage chapters that doesn't require any knowledge about the underlying formats.
The new inferace makes it simple to import chapters from files. We currently support [PSC (Podlove Simple Chapters)](https://podlove.org/simple-chapters/), mp4chaps and Audacity Track Labels. [Let us know](https://community.podlove.org/c/podlove-publisher) if we don't support your favorite program's export format.
**Module: Import/Export**
Podcast import has been rewritten to make full use of Background Jobs. That way podcasts of any size can be imported without running into system resource restrictions for large podcasts.
**Background Jobs**
The jobs dashboard on the tools page now shows job statuses in realtime (refreshes automatically).
Adjusted background job duration parameters and made them configurable. The change of defaults aims to make better use of available cron time (normally 30 seconds per request), which can speed up long running background jobs dramatically.
Please refer to the new [Background Jobs page in the documentation](http://docs.podlove.org/podlove-publisher/developer/background-jobs.html) for more details.
**Bits & Pieces**
* remove module: App.net (because they [are shutting down](http://blog.app.net/2017/01/12/app-net-is-shutting-down/))
* fix tracking export
* redirects (expert settings): redirect counter can be reset
* contributor avatars use WordPress media picker
* optimize use of JavaScript:
- only load scripts on pages that require them
- concatenate and minify some scripts
= 2.4.6 / 2.4.7 =
- Image cache: support non-pretty permalinks.
- fix feed compatibility issue with [Relevanssi plugin](https://wordpress.org/plugins/relevanssi/)
- services: fix lastfm url scheme (thanks [jazzcrack](https://github.com/jazzcrack))
= 2.4.5 =
Image cache: change URL encoding method to fix Gravatar issues.
= 2.4.4 =
Further image cache improvements:
- reject URLs that are not images
- prefix query vars to avoid naming conflicts with other plugins
- fix resizing sometimes not calculating the correct dimensions
- enhancement: skip http when using images shipped with the Publisher; copy images from Publisher to cache directory on filesystem instead
= 2.4.3 =
Fix issue with broken images introduced in 2.4.2.
= 2.4.2 =
**Improve Image Caches**
Images relevant to the Podlove Publisher are downloaded so they can be resized to desired dimensions. This makes it possible to deliver retina-images and improves the website performance because only the appropriate image size delivered.
This requires files to be downloaded. Until now, this happened in the background to avoid slow web page load times when the image is fetched. Until the cache existed, the original file URL to the unresized file was used. This worked alright, unless you were using a page cache plugin. The original file URL would be used much longer than necessary, causing big file downloads.
Now a different approach is used. Instead of the original file URL, a dynamic link is generated, looking like this one: `https://example.com/podlove/image/http%3A%2F%2Fexample.com%2Fmedia%2Fmypodcast%2Fmy-podcast-logo-1500x1500.jpg/300/300/0/my-podcast`. When this link is requested, the cached and resized image is either delivered or, if it doesn't exist, generated on-the-fly. Once the cached file exists, the direct link to the cached file is delivered, just like before. The major improvement is that even if the initial URL is stuck in your page cache, the Publisher is now able to deliver a properly resized image anyway.
**Other**
* set correct feed Content-Type in HEAD requests and redirects
* enhancement: repair & clear cache tools print a notice about other cache plugins
* fix "Last Month" download widget in analytics
= 2.4.1 =
* services: Playstation Network Account now links to `http://psnprofiles.com`
* allow spaces in episode slugs
* add help tab to analytics pages
* fix Podlove Web Player 2 timecode share link
* fix issue with image cache filenames ([PR 895](https://github.com/podlove/podlove-publisher/pull/895))
* fix WP-Rocket incompatibility with Podigee Player
* fix Auphonic: when neither episode image nor post thumbnail are present, fallback to podcast cover art
* fix PHP warnings in oembed module
= 2.4.0 =
**Background Jobs System**
Crunching numbers for Analytics takes time, especially for popular podcasts with many downloads. The old system was written optimistically and "let's-hope-we-finish-before-we-run-out-of-time"-ish. That was certainly good enough for podcasts with a few hundred downloads per episode, but more likely a gamble for popular shows.
To solve this issue in a scaleable way, we built what is known as "background processing" or "queues". That way we can break big tasks into small chunks and process them step by step. You don't really need to know about this, since the main effect is that calculating analytics should be a smoother experience (if you have ever had troubles in that regard) but if you are curious, have a look at the new "Tools" section, which lists running and recently finished jobs.
**New Analytics Dashboard**
* "Downloads per Day" is a stacked bar chart now so you can see which episode is responsible for peaks
* Downloads table now shows downloads in time segments starting from the moment of episode release for better comparability
* Show total number of all downloads in Analytics Dashboard
* New information under downloads table: age of the data and when the next refresh is due
* _MUCH_ better performance / page load times
* New option to configure how many episodes per page should be shown
**Podlove Web Player 2 Facelift**
* simplified, modernised look
* responsive layout for mobile devices
* fix: updated mediaelement library to fix volume bar display bug
**Podigee Podcast Player**
The [Podigee Podcast Player](https://www.podigee.com/en/podcast-player) is available as an alternative to the Podlove Web Players. It supports everything you can expect from a modern web player like chaptermarks. It is also embeddable.
**New "Tools" Menu**
* A new maintenance section gathers tools like the "Repair" button in one place
* There is a new section for analytics related maintenance
* Import & Export is now in the "Tools" menu
**Improved Logging Display**
* Logging is now in the "Support" menu
* add filtering for different severities
* hide "info" entries by default
* improve readability of data sections
**Other**
* add Emoji support for episode subtitle, summary and chapter marks (requires WordPress 4.2 or newer)
* Web Player setttings moved from Expert Settings to Podcast Settings
* When activating the plugin, add mp3 asset and feed to help users get over the most confusing part of the setup.
* Post thumbnails can be used as episode covers (see settings in "Episode Assets"). This is the new default.
* add contributors shortcode to default template (Many people activated contributors and then wondered why they were not displayed in the episode. Now the shortcode is part of the default template, but only if the contributors module is active.)
* add unmistakable warning if curl is not available and provide actionable steps for a solution
* change feed setting "Include HTML Content" default to "on"
* remove log entries for beginning and ending asset validations
* move feed protection into separate module
* move debug log from Dashboard to Support page
* add ptm_request parameter to redirected tracking URLs which contains a uuid
* add fyyd.de module
* add option to enforce http or https in URLs inside feeds (enclosures, images) and the actual feed URLs; see `Expert Settings > Website`
* improve tracking: ignore 1-byte requests
* update user agent library (new/updated clients: Podcat, Downcast, iCatcher, BashPodder)
* show total downloads per site in network dashboard
* remove `<itunes:keywords>` from feed (it disappeared from the specification)
* remove module: "Feed Validator"
* update recommended image size to 3000x3000 pixel
* add heartbeat to keep note of when tracking is active
* `shortcode_exists($shortcode_name)` is now available in Twig templates
* system report: add notice if ALTERNATE_WP_CRON is active
* fix tracking export: keep httprange
* fix compatibility with other plugins relying on Spyc library
* fix `{{ episode.duration.totalMilliseconds }}`
* fix image caching issue (invisible characters)
* fix: When plugin requirements are not met, admin notices are now still shown once but the plugin is automatically deactivated after that. This avoids faulty setups.
* fix: show podcast covers in network site switcher
* fix: expert settings not saving on some systems
= 2.3.18 =
* fix Auphonic authentication (https certificate issue)
= 2.3.17 =
* fixes a bug that broke some settings pages
= 2.3.16 =
* security: fix SQL injection
* security: remove several Cross-Site Scripting vulnerabilities
All vulnerabilities require admin capabilities. That means they cannot be exploitet easily, but could be using Cross-site request forgery (CSRF).
Thanks to [RIPS Technologies](https://www.ripstech.com/) for reporting these issues. The issues were found using their Static Source-Code Analyzer RIPS.
= 2.3.15 =
* ensure 3rd party PHP dependencies do not require PHP 5.5 or greater
= 2.3.14 =
* fix: send episode cover to Auphonic if available
* fix: improved download logic for `geoip.mmdb` should prevent faulty downloads
* enhancement: error message for faulty `geoip.mmdb` includes instructions on how to manually fix the file
* enhancement: automatically switch off geo tracking when no valid geo database is available
* enhancement: clarify episode image asset options
= 2.3.13 =
* fix: sort contributor names while ignoring uppercase/lowercase
* fix: when exporting a podcast, don't call `htmlspecialchars` on arrays because it breaks things
* fix: image caching issue (invisible characters)
* fix: broken geolocation database does not prevent playing episodes
* fix `{{ episode.duration.totalMilliseconds }}`
* fix: `{{ episode.duration }}` returns "00:00" if no duration is set
* fix: contributor avatar URLs with umlauts
* enhancement: check for geolocation database validity in tracking debug section
* enhancement: add current theme and feed URLs to system report
* Podlove Subscribe Buttons: parameters in templates and shortcodes can override Publisher provided fields: 'title', 'subtitle', 'description', 'cover'
= 2.3.12 =
Design Update for Podlove Subscribe Button
* The button now follows a flat design and has more options for customizability.
* See [docs.podlove.org/podlove-subscribe-button](http://docs.podlove.org/podlove-subscribe-button/) for a range of possible display variants.
* Widget module has been updates to support a color picker and settings for size, format and style. When using the "WordPress Customizer" you get a live preview of the button.
* If you are using the Template API, have a look at the updated [`podcast.subscribeButton` parameters](http://docs.podlove.org/podlove-publisher/reference/template-tags.html#podcast).
= 2.3.11 =
* fix feed issue that appeared with WordPress 4.5 (wrong content type)
= 2.3.10 =
* when activating the plugin, add mp3 asset and feed to help users get over the most confusing part of the setup
* fix tracking export: keep httprange
* fix compatibility with other plugins relying on Spyc library
* improve tracking: ignore 1-byte requests
* update user agent library (new/updated clients: Podcat, Downcast, iCatcher, BashPodder)
* remove `<itunes:keywords>` from feed (it disappeared from the specification)
* update recommended image size to 3000x3000 pixel
* fix Podlove Subscribe Button iTunes link
* add new "getting started" video to readme
= 2.3.9 =
* fix `open_basedir` related issues
= 2.3.8 =
**Bugfixes**
* fix '&' issue in some fields when exporting/importing
* player: pass podcast language code to web player v3
* open graph: do not include non-downloadable assets
* open graph: use tracking URLs if available
* template editor: add scrolling when having many templates in the list
* auphonic: disable "Open Production" button when no production is selected
* player: chapters visibility setting now applies to v3 beta player
* more defensive feed gzipping for compatibility with various caching plugins
* fix feed discovery cache (can now handle both http and https at the same time)
**Enhancements**
* enhance error message when resolving URL fails
= 2.3.7 =
* fix "add new" contributor button
* fix migration class error
* fix migration system report display
* use default WordPress background color in migration wizard
= 2.3.6 =
**Bugfixes**
* When creating a new contributor, social and donation services are saved correctly
* Deleting a contributor shows the correct confirmation message
**Enhancements**
* Podlove Subscribe Button: When an iTunes id is known for a feed, the button does not just pass the feed URL to the client when iTunes or Podcasts App are chosen. It redirects the user to the iTunes directory first. Because if you don't do this, "[it] does not increase your visibility on the iTunes Store or allow you to earn commission as part of the Affiliate Program." (http://www.apple.com/itunes/podcasts/specs.html)
* Detect and warn if an episode slug has been used before
= 2.3.5 =
Update Web Player v3
* beta.6 https://github.com/podlove/podlove-web-player/releases/tag/v3.0.0-beta.6
* rc.1 https://github.com/podlove/podlove-web-player/releases/tag/v3.0.0-rc.1
* rc.2 https://github.com/podlove/podlove-web-player/releases/tag/v3.0.0-rc2
* rc.3 https://github.com/podlove/podlove-web-player/releases/tag/v3.0.0-rc3
= 2.3.4 =
**Web Player (v3 Beta)**
The new web player can be selected in `Expert Settings > Web Player`. Please try it out and send us your feedback. Thanks!
* update player
* add theme player options
* fix player permalink parameter
* fix player width on Mobile Safari
**Other**
* fix Auphonic workflow bug: when finishing a production, media files would sometimes erroneously be detected as not existing
* detect when the configured Auphonic Preset does not exist
* fix focus when adding new related episode rows
* chosen search fields allow partial searches
* enable Twig date extension to allow `time_diff` filter; see [Date Extension Documentation](http://twig.sensiolabs.org/doc/extensions/date.html)
= 2.3.3 =
Updating all the things for your pleasure.
= 2.3.2 =
* add template accessor `episode.post` to get WordPress post object
* fix: template call `episode.chapters` returns an empty list when there are no chapters
* fix: deleting image cache when no image cache directory exists
* fix: cache purge also deletes timeout entries
* fix: cache purge affects downloads table
* fix: JavaScript event for secondary download button
* fix: default template assignment on plugin activation
* fix: unpublished relates episodes do not appear when using the shortcode or template accessor
= 2.3.1 =
* simplify download buttons (`[podlove-episode-downloads style="buttons"]`) style to better adapt to themes
* fix: missing "Show URL" download button in twentyfifteen theme
* fix: URL structure for YouTube channels
* fix: player visibility when JavaScript is disabled
* fix: stop loading nonexisting player assets in WordPress admin area
* enhanced system report: change wording for `open_basedir` issue to clarify that it _should_ be fixed but a workaround exists
* enhanced plugin loading
* When upgrading from version 1.x to 2.x using PHP 5.3, the upgrade lead to the "White Screen of Death" because 2.x requires PHP 5.4. This case is now handled and the Publisher shows an appropriate admin notice.
* Some shared hosters seem to have problems with the plugin update process, which leads to the Publisher missing files and breaking the site. This is now also detected and a notice appears, asking the user to manually redownload the plugin.
= 2.3.0 =
**New Module: Seasons**
Do you have seasonal content? We got you covered. The new "Seasons" module allows you to group episodes into seasons. Each season has a title and other optional metadata, like a custom image. You can access all this data using the template system.
New Template accessors:
- `episode.season` returns the season for the episode
- `podcast.seasons` returns a list of all seasons
- `season.episodes` returns a list of all episodes in a season
**New Module: Flattr**
Everything Flattr related was moved into its own module.
If you don't use Flattr, you can turn it off and it gets out of your way.
* If you are using the Flattr module, we write Flattr payment information into podcast feeds. This way you don't need to rely on the official Flattr plugin to do this. You can probably deactivate it if you were using it since we provide the main functionality within the Publisher now.
* We recently changed the default `flattr` parameter in shortcodes. Now there's a setting in Flattr Podcast Settings where you can define the default parameter for contributor shortcodes.
**New Module: Related Episodes**
You can now express that episodes are related to each other. You can list all related episodes using the new shortcode `[podlove-related-episodes]` or using the template accessor `episode.relatedEpisodes`.
**Templates & Themes**
If you are developing themes, you now have full access to the Publisher Template system. The API is exactly the same as in Twig, just the syntax is different. At the moment, there are 4 entry points:
- `\Podlove\get_episode()`
- `\Podlove\get_podcast()`
- `\Podlove\get_flattr()`
- `\Podlove\get_network()`
Please see the ["Understanding Templates" guide](http://docs.podlove.org/guides/understanding-templates/) for more details.
**Other**
* Use WordPress Object Cache API to cache model objects. All entities fetched by id are cached and reused within the same page call. Performance gains are most notably in complex templates, which often access the same data repeatedly.
* Analytics: Update & improve user agent detection library so you can have more accurate analytics.
* Canonical feed URLs. WordPress respects if you want your URLs to end with a slash or not (you do that by adding or removing the trailing slash from your WordPress permalink settings custom structure). Our feed URLs now respect this choice, too. Furthermore, we permanently redirect to the canonical URL if another one was accessed to ensure all clients access _exactly_ the same feed URL.
* News from podlove.org are displayed in the Podlove Dashboard
* Users with role "author" and higher now have access to the Podlove Dashboard and Analytics. They only have access to dashboard sections that make sense for authors, so they won't see logging, feed or asset validation.
* Contributors can now be edited in _Contributor Settings_ (instead of _Episodes > Contributors_)
* Contributors Social Services: It is now possible to add a YouTube "Channel", not just user profiles
* Contributors Social Donations: Add "paypal.me" option
* Add functionality to automatically determine the duration for episodes. This is especially useful for people who don't use Auphonic, which already determines the duration automatically.
* We are now able to handle media files that are served without a "Content-Length" header. A specific warning is generated and the size is displayed as "unknown", but the files are treated as valid so they can be played.
* Add support for Auphonic webhooks. This allows us to import your episode metadata once an Auphonic production is finished — even if you navigated away from the episode page.
* Podcast cover image can now be uploaded using the WordPress media uploader.
* Add `contributor.gender` template accessor
* Rename network list "description" to "summary" for consistency. In templates `list.description` is now deprecated. Please use `list.summary` instead.
* fix: Shortcodes in episode subtitle and summary are not interpreted any more. Both fields were always considered plain text and having shortcodes leads to various issues, especially in feeds.
* export files are now gzipped if possible
* fix JavaScript incompatibility related to Diaspora plugin ([#771](https://github.com/podlove/podlove-publisher/pull/771), [#770](https://github.com/podlove/podlove-publisher/pull/770), [#425](https://github.com/podlove/podlove-publisher/issues/425), thanks [@noplanman](https://github.com/noplanman)!)
* fix: failing geo-lookup does not break tracking links
* fix: Remove WordPress favicon (since WP 4.3) from podcast feeds if a podcast image is set
* fix: pasting into a template creates change-marker
* fix: tracking import does not skip the last few entries
= 2.2.4 =
* fix: erratically missing chapter information in RSS feeds
* fix: "Allow to skip feed redirects" setting was sometimes ignored
= 2.2.3 =
* fix: web player image fallback to podcast image when an episode image asset is defined but unused
* fix: gzip compression: only set content type if headers have not been sent
* fix: in networks, don't schedule template cleanups for blogs without an active Publisher
= 2.2.2 =
* fix: template cache issue where duplicate purge cronjobs could flood the cron system
* fix: image cache validation (didn't work due to missing library)
= 2.2.1 =
* fix: App.net announcement preview in modules
* fix: asset validations are always scheduled properly
* fix: Remove method calls that require WordPress 4.0+ (wpdb::esc_like)
= 2.2.0 =
**Image Caching, Resizing & Retina Support**
We now take better control of podcast images, episode images, contributor avatars and our own social icons.
We are able to *resize* them to ideal sizes, which results in *faster page load times* for your users. *Retina
images* for higher-resolution displays are also supported. We do this automatically, so all you need to do
is click update, lean back and enjoy.
Read all the details in our blog post ["Podlove Publisher 2.2: Say hello to image caching"](http://podlove.org/2015/05/20/podlove-publisher-2-2/)
This update increases the WordPress requirement from 3.0 to 3.5 (due to the required image editing functionality).
**Other**
* fix: duplicate feed discovery
* fix: ignore incomplete feed configurations
* fix: don't include network admin module css in frontend
* fix: dashboard episode edit links
* fix: when deleting WordPress Network sites, trigger plugin uninstall to remove database tables
* fix: web player flash fallback
* fix: network templates now also appear in the template widget and template auto-insert setting
* fix: issue where some database tables were not created
* fix: podcast covers are displayed in frontend admin menu bar
* show Twig template errors in dashboard log
* web player template tag can set tracking context: `episode.player({context: 'landing-page'})`
* add `episode.categories` template tag
**Deprecations**
- deprecated `episode.imageUrl`, use `episode.image` instead
- deprecated `episode.imageUrlWithFallback`, use `episode.image({fallback: true})` instead
- deprecated `podcast.imageUrl`, use `podcast.image` instead
- deprecated `service.logoUrl`, use `service.image` instead
- deprecated `contributor.avatar`, use `contributor.image` instead
While you are changing these, consider scaling them down appropriately. Your images are probably huge but in many cases you don't need the full size. So instead of `episode.image` or `episode.image.url`, specify a size, like this `episode.image.url({width: 200})`.
= 2.1.3 =
* add warning in system report for users with default permalink settings (which is problematic for some podcast clients)
* enhancement: delete caches in all blogs when changing a network template
* enhancement: delete caches when changing the template default assignment
* enhancement: do not rely on openssl module
* fix: add flattr setting to contributors general tab
* fix: duplicate episodes when using `podlove.episodes` template accessor
* fix: correctly fire plugin activation hooks in network mode
* fix: ensure network module is activated correctly
* fix: "Add New" link in empty list tables
= 2.1.2 =
* fix issue with users that have open_basedir set, which lead to all assets being invalid
= 2.1.1 =
* fix: remove obsolete "Add New" template button from network templates screen
* fix: template autoinsert does not use deprecated "id" parameter
* fix: template widget does not use deprecated "id" parameter
* fix: duplicate episodes in feeds
* fix: some server configurations (especially on shared webhosting) break cURLs ability to follow HTTP redirects. We now check for that configuration and, if necessary, resolve the URL manually before continuing normally.
* fix: XSS vulnerabilities in contributors search
* fix: Template accessor `contributor.id` now correctly returns the id, not the uri. `contributor.uri` is the new accessor to get the uri.
* fix: Filtering contributions by id is now correctly affected by other filters, like group and role. Until now, `podcast.contributors({id: 'james', role: 'on-air'})` always returned James, no matter if he had the given role or not.
* add "Add New Contributor" item to contributor select list. Selecting it opens the screen to add a new contributor.
* add Twig version to system report
= 2.1.0 =
**Networks: WordPress Multisite Support is Here**
- dedicated WordPress Multisite support
- "My Sites" menu features podcast covers and menus include often used pages like "Podlove Dashboard" and episodes
- Network Dashboard provides a birds-eye view over your podcast empire
- Network-Templates that are accessible in every podcast
- Podcast lists: give templates access to multiple podcasts at once, allowing you to automatically list all podcasts in your network, the 10 last episode releases in your network and much more
**Widgets**
We added a happy bunch of widgets to make your life easy.
* Podcast Information: Display cover, subtitle and summary of your podcast
* Recent Episodes: Display a list of recent episodes, with cover art and duration if you like
* Template: Display any Publisher template in a widget area
* Podcast License
The Subscribe Button Widget now defaults to "Big with Logo" and auto-width. It has also been renamed to "Podcast Subscribe Button" to be distinguishable from the new standalone plugin.
**Templates**
* add accessors `{{ podcast.landingPageUrl }}`, `{{ podcast.subscribe_button }}` (see http://docs.podlove.org/reference/template-tags/#podcast)
* add accessor `{{ flattr.button }}` (see http://docs.podlove.org/reference/template-tags/#flattr)
* add accessor `{{ episode.podcast }}`
* add query parameters to ``{{ contributor.episodes }}`:
- group: Filter by contribution group. Default: ''.
- role: Filter by contribution role. Default: ''.
- post_status: Publication status of the post. Defaults to 'publish'
- order: Designates the ascending or descending order of the 'orderby' parameter. Defaults to 'DESC'.
- 'ASC' - ascending order from lowest to highest values (1, 2, 3; a, b, c).
- 'DESC' - descending order from highest to lowest values (3, 2, 1; c, b, a).
- orderby: Sort retrieved episodes by parameter. Defaults to 'publicationDate'.
- 'publicationDate' - Order by publication date.
- 'recordingDate' - Order by recording date.
- 'title' - Order by title.
- 'slug' - Order by episode slug.
- 'limit' - Limit the number of returned episodes.
**Other**
* add gender contribution statistics to dashboard
* add expert setting "Allow to skip feed redirects"
* add warning in tracking settings when default permalink structure is used
* add support for Auphonic cover art
* add support for Jetpack "Publicize" module to podcast post type
* add warning when open_basedir is set to system report
* add daily cleanup of logging table (only keep entries of previous 4 weeks)
* contributor editing has a tabbed interface
* improved Podlove Dashboard performance
* Open Graph title does not include episode subtitle any more. If a subtitle is available, it is put in front of the summary in the description tag.
* fix: remove Jetpack "Site Icon" from podcast feeds
* fix: empty template editor when last template is deleted
* fix: empty caches when a scheduled episode gets published
* fix analytics episode average calculation for ancient episodes
**API changes**
* Flattr parameter in `[podlove-episode-contributor-list]` now defaults to "no". If you need to reactivate it, use `[podlove-episode-contributor-list flattr="yes"]`
* `[podlove-web-player]` was renamed to `[podlove-episode-web-player]` to avoid clashes with the standalone web player plugin. For now, the old shortcode still works.
* `[podlove-subscribe-button]` was renamed to `[podlove-podcast-subscribe-button]` to avoid clashes with the standalone button plugin. For now, the old shortcode still works.
= 2.0.5 =
* fix: template editor cursor position in Safari (by changing to a different theme that doesn't use bold styles)
* fix: double escaped feed enclosure URLs when using non-pretty-permalinks
= 2.0.4 =
* fix: missing flattr attribute for contributors
* fix: subscribe button description is properly wrapped in p-tags
* fix: faulty valid file if check returns "unreachable" but includes a Content-Length header
* fix: more thoughtful handling of ETags when validating files prevents failing updates
* fix: "NaN" analytics should display properly now
* fix: off-by-one display in analytics
* fix: don't HTML-encode quotes in episode title/subtitle/summary since it leads to invalid feeds
* add trakt.tv to the services list
* add support for RSS channel image tag
= 2.0.3 =
*Allow Non-Admins to access Analytics*
Analytics have a new capability called "podlove_read_analytics".
You can provide access to, for example, editors, using the following code snippet:
function podsnip_add_capability() {
// default roles: editor, author, contributor, subscriber
$role = get_role('editor');
$role->add_cap('podlove_read_analytics');
}
add_action( 'admin_init', 'podsnip_add_capability');
You can add snippets using the "Code Snippets" plugin.
*Bugfixes*
* fix: use proper HTTP method to create/update/delete templates
* fix: don't remove URLs from chapter marks when saving
* fix: optional episode form elements can be saved
= 2.0.2 =
* fix: include missing YAML library
* fix: namespacing issue in uninstall procedure
* fix: debug tracking example file must be downloadable
= 2.0.1 =
**Bugfixes**
* fix: properly sanitize episode form data (fixes "A wild Backslash appears")
**Enhancements**
* format download numbers in episode list
* remove check for PHP setting `allow_url_fopen` because we don't rely on it any more
= 2.0.0 =
**Download Analytics**
You want to know more about who listens to your podcast? We got you covered.
We spent months of research and prototyping to find a reliable way of tracking. We are confident that our approach works and produces trustworthy data. If you have not done so yet, you have to activate tracking in _Expert Settings -> Tracking_.
If you are interested in all the technical details, head over to http://docs.podlove.org/guides/download-analytics/.
But what you are seeing now is just the beginning. We have a plethora of ideas on how to give you even more insight into the data available. Stay tuned!
We are curious what you think about the current analytics interface? What do you love? What do you hate? What do you miss? Head over to our new community site and share your thoughts: https://community.podlove.org/
**Bugfixes**