Commit Graph

9414 Commits

Author SHA1 Message Date
c3c2ab61d7 Restore Media3 Next behavior (#8560)
### Description

Restore legacy manual Next behavior in the Media3 playback service.

This PR advertises the standard Media3 NEXT command and routes it
through the Media3 next-in-queue path with legacy-equivalent playback
finalization. That restores legacy queue cleanup, episode played-state
handling, playback history, auto-delete evaluation, and end-of-queue
behavior for manual Next.

While implementing this, several related Media3 playback synchronization
issues were also addressed:

- Route playback state synchronization through
`updatePlaybackPreferences()` after switching episodes so
`PlayerStatusEvent` is emitted through the centralized helper and the
playback UI immediately reflects the new media.
- Clear the current playable when skipping the final queue item so the
service, player, widget, and notification do not retain stale playback
state.
- Restore the existing end-of-queue message when manually skipping the
final queued episode.
- Use Media3 media button preferences instead of the legacy custom
layout API so the standard NEXT command can be exposed while preserving
the intended notification/SystemUI button arrangement.

Closes #8528

### Checklist
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [ ] If it is a core feature, I have added automated tests
2026-07-11 23:22:03 +02:00
42b0ef5e27 Unblock users when sleep timer acts up (#8593)
### Description

Unblock users when sleep timer acts up. Release mode only, we want to
handle/fix this as a bug if it happens.

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-11 22:00:51 +02:00
af577fef08 Stop playback when currently playing file gets deleted (#8583)
### Description

Stop playback when currently playing file gets deleted
Closes #8515

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-09 20:57:16 +02:00
4d4684525c Fix playback position getting reset on continuous playback on new playback service (#8588)
### Description

Fix playback position getting reset on continuous playback on new
playback service
Closes #8468

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-09 20:42:37 +02:00
e3b8b0d01b Fix stale position broadcast in new playback service (#8584)
### Description

Fix stale position broadcast in new playback service. super.seekTo() is
asynchronous. player.getCurrentPosition() called immediately after still
returns the old position.

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-09 20:39:46 +02:00
3d1c1a79ba Fix some crashes reported through google play (#8579)
### Description

Possible fixes for some crashes reported through google play

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-09 08:48:05 +02:00
df29c2fe27 Fix miniplayer disappearing when switching episode during cast (#8582)
### Description

Fix miniplayer disappearing when switching episode during cast. The
player comes back after a while (probably because of other service
changes since that issue was opened) but it disappearing is the wrong
behavior. With this change, the player stays active until actually
transitioning to "playing".

Closes #8504

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-09 08:21:33 +02:00
e32c9e90ff Fix local folder playback not showing cover (#8580)
### Description

Fix local folder playback not showing cover
Closes #8562

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-09 08:10:35 +02:00
78af5e353b Fix possible memory leaks in new playback service (#8578)
### Description

Fix possible memory leaks in new playback service

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-07-08 07:53:13 +02:00
bdfd540c32 Bump version to 3.12.0-beta4 2026-06-30 08:08:02 +02:00
1f755eed98 Don't swallow PlayerStatusEvent if media changed (#8554)
### Description

Don't swallow PlayerStatusEvent if media changed. We only checked the
status, but if we directly started a new episode without going through
pause/play, we skipped sending the PlayerStatusEvent incorrectly.

Closes #8548
Closes #8516
Closes #8530

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-30 08:05:40 +02:00
7ad0ce618a Run widget updates from a background thread (#8553)
### Description

Run widget updates from a background thread
Closes #8546

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-29 22:46:50 +02:00
e977dad7fc Enable media3 disk cache in new playback service (#8552)
### Description

Enable media3 disk cache in new playback service
Closes #8487

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-29 22:06:42 +02:00
5442a66573 Fix cover display on chromecast (#8543)
### Description

Fix cover display on chromecast

Closes #8503

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-23 09:20:47 +02:00
f9ca0e55bb Try to reduce memory consumption (#8539)
### Description

Try to reduce memory consumption
- Initialize the data source factory only once
- Do not hand out cover images to media sessions (Android Auto, etc)

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-23 07:59:31 +02:00
c789cc03ea Fix crash when leaving while delete dialog is open (#8542)
### Description

Fix crash when resuming the activity while "delete podcast" dialog is
open.

The dialog gets called with a `Feed` as its extra but the `Feed` object
is not serializable. When the background activity gets killed, restoring
from the instance state is broken and crashes the app. Simply making it
serializable fixes the problem. Crash reported through Google Play.

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-23 07:57:37 +02:00
f75b3ff1a8 Fix undo snackbar showing placeholders (#8540)
### Description

Fix undo snackbar showing placeholders

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-23 07:57:09 +02:00
43394f9ff3 Fix crash when speed dialog gets closed while handler is running (#8541)
### Description

Fix crash when speed dialog gets closed while handler is running. This
seems super hard to trigger, but apparently some of our beta testers
managed to do it.

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-23 07:56:44 +02:00
8ed8b74232 Fix not displaying artist in notification (#8533)
### Description

Fix not displaying artist in notification

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-20 09:09:48 +02:00
1d8f354028 Bump version to 3.12.0-beta3 2026-06-04 21:33:24 +02:00
cd511305f5 Translations update from Hosted Weblate (#8511)
Translated using Weblate
Translator: de by ByteHamster <info@bytehamster.com>

Translated using Weblate
Translator: pt by "Filipe Mota (BlackSpirits)" <blackspirits@gmail.com>

Translated using Weblate
Translator: de by VfBFan <vfbfan@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: fr by Matth78 <3684177+Matth7878@users.noreply.github.com>

Translated using Weblate
Translator: it by Luca <loucasal@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: iw by Yaron Shahrabani <sh.yaron@gmail.com>

Translated using Weblate
Translator: ru by Jin Xiashomi <cute.XFCE.rat@2mail.co>

Translated using Weblate
Translator: et by Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>

Co-authored-by: ByteHamster <info@bytehamster.com>
Co-authored-by: Filipe Mota (BlackSpirits) <blackspirits@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jin Xiashomi <cute.XFCE.rat@2mail.co>
Co-authored-by: Luca <loucasal@users.noreply.hosted.weblate.org>
Co-authored-by: Matth78 <3684177+Matth7878@users.noreply.github.com>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Co-authored-by: VfBFan <vfbfan@users.noreply.hosted.weblate.org>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
2026-06-04 21:31:55 +02:00
ca86fec2c2 Fix widget buttons on new playback service (#8510)
### Description

Fix widget buttons on new playback service
Closes #8454

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-06-04 20:49:10 +02:00
0207527d9d Ensure that we always have something to resume (#8502)
### Description

Ensure that we always have something to resume

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-30 20:32:44 +02:00
b1604a503a Fix redirect checker taking too long (#8501)
### Description

Fix redirect checker taking too long when enriching media items. We
cannot do this here, otherwise the media session takes too long to load
lists with many items. Also, it potentially delays starting playback,
which leads to "service did not start in time" crashes.

Instead, do this in the data source factory and cache the result. That
way, we already start playback earlier and transition the service
earlier.

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-30 12:22:26 +02:00
a0010694a3 Fix sleep timer and chapter notification buttons (#8499)
### Description

Fix notification buttons: Fix sleep timer button not getting displayed
and chapter button not seeing any chapters.

Closes #8473

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-30 11:19:27 +02:00
b57991fab2 Reduce padding of currently playing item background (#8498)
### Description

Reduce padding of currently playing item background

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-29 12:56:51 +02:00
7bc412a06e Fix pressing cover to start playing (#8497)
### Description

Fix pressing cover to start playing in new playback service

Closes #8492

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-29 11:43:30 +02:00
f3cce39ee5 Reduce number of PlayerStatusEvent messages (#8495)
### Description

We send lots of duplicate PlayerStatusEvent messages, especially around
seeking and when pressing play for the first time. Each of those events
starts a re-load of the current fragments. This means we parse chapters
again, update the position again, etc.

Closes #8447

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-29 11:27:18 +02:00
d1541863ca Fix crash in sync preferences fragment (#8496)
### Description

Fix crash in sync preferences fragment. When changing the theme while on
the sync preferences page, we went through onCreate with restoring the
instance state. In this case, the action bar is not available, so we
crash. Move action bar handling to a new function that is not called
from onCreate.

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-29 11:11:14 +02:00
036b01f003 Fix pausing on bluetooth disconnect (#8493)
### Description

Fix pausing on bluetooth disconnect. This took ~100 lines of code in the
old service, with media3 it's a single line :)

Closes #8482

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-28 21:27:03 +02:00
55cf75def9 Add if-range header when downloading (#8491)
### Description

Add if-range header when downloading. Only resume download if the server
tells us that the file didn't change in the meantime. This can happen
especially in the presence of dynamic ad insertion.

Original idea by @bushnelb in #8441

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests

Co-authored-by: bushnelb <134662243+bushnelb@users.noreply.github.com>
2026-05-28 16:39:10 +02:00
269d6b7ef1 Fix chapter buttons in new playback service (#8488)
### Description

Fix chapter buttons in new playback service. They still tried to use the
old service controls.
Closes #8483

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-28 10:58:21 +02:00
f5184b68c7 Bump version to 3.12.0-beta2 2026-05-25 22:51:11 +02:00
5c1ba4e235 Translations update from Hosted Weblate (#8479)
Translator: de by ByteHamster <info@bytehamster.com>

Translated using Weblate
Translator: ro by ByteHamster <info@bytehamster.com>

Translated using Weblate
Translator: in by Arif Budiman <arifpedia@gmail.com>

Translated using Weblate
Translator: pt-rBR by OlliesGudh <github@paulogomez.anonaddy.com>

Translated using Weblate
Translator: pt-rBR by burns <ahoradocafezinho@gmail.com>

Translated using Weblate
Translator: tr by Bora Atıcı <boratici.acc@gmail.com>

Translated using Weblate
Translator: pt by ssantos <ssantos@web.de>

Translated using Weblate
Translator: es by CJ Montero <cristlad@proton.me>

Translated using Weblate
Translator: es by Libre <6n0n1m0s@proton.me>

Translated using Weblate
Translator: it by Luca <loucasal@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: cs by Petr Čech <petr@cechovi.org>

Translated using Weblate
Translator: sv by Martin Bergström <brgstrmm@gmail.com>

Translated using Weblate
Translator: fa by Danial Behzadi <dani.behzi@ubuntu.com>

Translated using Weblate
Translator: zh-rTW by samko5sam <sam930903@gmail.com>

Translated using Weblate
Translator: ro by Nicodim Ştefan <ioi_dima.86@protonmail.com>

Translated using Weblate
Translator: el by axilleas tsimp <axiltsi8@gmail.com>

Translated using Weblate
Translator: fr by Matth78 <3684177+Matth7878@users.noreply.github.com>

Translated using Weblate
Translator: zh-rTW by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: sk by Tibor Blažko <tblazko+transifex@gmail.com>

Translated using Weblate
Translator: eu by Eder Etxebarria Rojo <eder@betxepare.eus>

Translated using Weblate
Translator: sv by Efraim Sundelin <efraim.sundelin@gmail.com>

Translated using Weblate
Translator: gl by "josé m." <correoxm@disroot.org>

Translated using Weblate
Translator: iw by Yaron Shahrabani <sh.yaron@gmail.com>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: zh-rCN by 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: fil by Wacky Wars <wackywars21@gmail.com>

Translated using Weblate
Translator: da by ERYpTION <eryption@users.noreply.hosted.weblate.org>

Translated using Weblate
Translator: de by ByteHamster <info@bytehamster.com>

Translated using Weblate
Translator: de by VfBFan <vfbfan@users.noreply.hosted.weblate.org>

Update translation files

Updated by "Cleanup translation files" add-on in Weblate.

Translated using Weblate
Translator: be by Jaŭhien <j.kisliakou@gmail.com>

Translated using Weblate
Translator: pt-rBR by Gabriel <bloxgabriel18@gmail.com>

Translated using Weblate
Translator: el by axilleas tsimp <axiltsi8@gmail.com>

Translated using Weblate
Translator: sv by Martin Bergström <brgstrmm@gmail.com>

Translated using Weblate
Translator: fi by Lilli <kauhanen.johannes20@gmail.com>

Translated using Weblate
Translator: gl by "josé m." <correoxm@disroot.org>

Co-authored-by: Arif Budiman <arifpedia@gmail.com>
Co-authored-by: Bora Atıcı <boratici.acc@gmail.com>
Co-authored-by: ByteHamster <info@bytehamster.com>
Co-authored-by: CJ Montero <cristlad@proton.me>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: ERYpTION <eryption@users.noreply.hosted.weblate.org>
Co-authored-by: Eder Etxebarria Rojo <eder@betxepare.eus>
Co-authored-by: Efraim Sundelin <efraim.sundelin@gmail.com>
Co-authored-by: Gabriel <bloxgabriel18@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jaŭhien <j.kisliakou@gmail.com>
Co-authored-by: Libre <6n0n1m0s@proton.me>
Co-authored-by: Lilli <kauhanen.johannes20@gmail.com>
Co-authored-by: Luca <loucasal@users.noreply.hosted.weblate.org>
Co-authored-by: Martin Bergström <brgstrmm@gmail.com>
Co-authored-by: Matth78 <3684177+Matth7878@users.noreply.github.com>
Co-authored-by: Nicodim Ştefan <ioi_dima.86@protonmail.com>
Co-authored-by: OlliesGudh <github@paulogomez.anonaddy.com>
Co-authored-by: Petr Čech <petr@cechovi.org>
Co-authored-by: Sketch6580 <sketch6580@users.noreply.hosted.weblate.org>
Co-authored-by: Tibor Blažko <tblazko+transifex@gmail.com>
Co-authored-by: VfBFan <vfbfan@users.noreply.hosted.weblate.org>
Co-authored-by: Wacky Wars <wackywars21@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: axilleas tsimp <axiltsi8@gmail.com>
Co-authored-by: burns <ahoradocafezinho@gmail.com>
Co-authored-by: josé m. <correoxm@disroot.org>
Co-authored-by: samko5sam <sam930903@gmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/antennapod/app/
Translation: AntennaPod/App
2026-05-25 22:48:34 +02:00
40ff8c0bbf Make progress indicator more visible in dark theme (#8478)
### Description

Make progress indicator more visible in dark theme

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-25 22:32:00 +02:00
2a84466d3f Fix clicking position links in shownotes (#8477)
### Description

Fix clicking position links in shownotes with new playback service

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-25 22:31:18 +02:00
6fb78719f5 Fix too many items showing up in playback history (#8476)
### Description

Fix too many items showing up in playback history. When continuous
playback is disabled, we still load the next episode to update the media
session. However, we should not mark it as started. Otherwise we clutter
the playback history with episodes that have not been played.

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-25 22:31:00 +02:00
7c768dceca Improve deletion from local folders (#8440)
### Description

Fix two issues with deleting episodes from local folder subscriptions:

1. **#8425**: The Delete action button was missing from the
single-episode detail screen for local folder items. In
`ItemFragment.java`, `actionButton2` was only set to
`DeleteActionButton` when `media.isDownloaded()` — but local feed media
is never "downloaded" in the traditional sense, so the button was never
shown. Added `item.getFeed().isLocalFeed()` to the condition.

2. **#8424**: The multi-select Delete action silently did nothing for
local folder items. The `performMultiSelectAction` method runs on a
`Schedulers.computation()` background thread, but
`LocalDeleteModal.showLocalFeedDeleteWarningIfNecessary` needs to show a
dialog on the main thread. Wrapped the call in
`activity.runOnUiThread()` in `EpisodeMultiSelectActionHandler` so the
confirmation dialog is shown (or deletion proceeds directly for
non-local items).

Both fixes ensure the local-folder delete warning dialog is still shown
when appropriate.

Closes: #8424
Closes: #8425

### Checklist
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [ ] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [ ] If it is a core feature, I have added automated tests

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ByteHamster <5811634+ByteHamster@users.noreply.github.com>
Co-authored-by: ByteHamster <info@bytehamster.com>
2026-05-20 10:38:00 +02:00
bf65dd5601 Fix dismissing miniplayer on media3 service (#8453)
### Description

Fix dismissing miniplayer on media3 service. To make this super nice, we
would need resumption support at runtime, but media3 does not support
that: https://github.com/androidx/media/issues/770
Closes #8446

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-19 12:47:16 +02:00
120ee36cc9 Fix rename icon in dark theme (#8451)
### Description

Fix rename icon in dark theme
Closes #8445

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-19 12:13:46 +02:00
8e5d4dab5e Fix trying to load local files over http (#8450)
### Description

Fix trying to load local files over http.
Closes #8449

```
E  java.lang.IllegalArgumentException: Expected URL scheme 'http' or 'https' but was 'content'
	at okhttp3.HttpUrl$Builder.parse$okhttp(HttpUrl.kt:1254)
	at okhttp3.HttpUrl$Companion.get(HttpUrl.kt:1634)
	at okhttp3.Request$Builder.url(Request.kt:184)
	at de.danoeh.antennapod.ui.episodeslist.MediaSizeLoader.lambda$getFeedMediaSizeObservable$0(MediaSizeLoader.java:46)
	at de.danoeh.antennapod.ui.episodeslist.MediaSizeLoader$$ExternalSyntheticLambda0.subscribe(D8$$SyntheticClass:0)
	at io.reactivex.rxjava3.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:40)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
	at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:348)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1154)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:652)
	at java.lang.Thread.run(Thread.java:1564)

```

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-19 12:13:18 +02:00
501251d8ff Bump version to 3.12.0-beta1 2026-05-14 15:18:14 +02:00
0a1ea7bb3d Merge branch 'master' into develop 2026-05-14 15:10:05 +02:00
6c3492af72 Update store metadata 3.11.4 2026-05-14 14:57:03 +02:00
7a362e12ff Follow all redirects before giving stream url to ExoPlayer (#8436)
### Description

Follow all redirects before giving stream url to ExoPlayer. This is an
attempt to reduce the impact of dynamic ad insertion changing the media
file while AntennaPod is still playing it.

Contributes to #7409

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint spotbugsPlayDebug spotbugsDebug`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-14 14:55:19 +02:00
2fa245c093 More 'expressive' item backgrounds (#8435)
### Description

Material 3 "expressive" uses a lot more bold color. Make the currently
playing item background a bit more expressive by using a stronger color.

Before/After:
<img width="200" alt="Screenshot_20260514-135531"
src="https://github.com/user-attachments/assets/6571f48c-333b-4c3b-b4e5-799e10a3cf84"
/> <img width="200" alt="Screenshot_20260514-135455"
src="https://github.com/user-attachments/assets/c709a9d8-a5bb-4c9e-bade-b805f68e3788"
/>


### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint spotbugsPlayDebug spotbugsDebug`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-14 14:24:17 +02:00
61b227e546 Remove 'pause on focus loss' setting (#8433)
### Description

Remove 'pause on focus loss' setting. The setting is non-functional with
the new playback service, which always pauses (and never ducks) when on
media type speech. This aligns with the Android system defaults and
media3 behavior.

Closes #8390

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint spotbugsPlayDebug spotbugsDebug`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-14 14:19:34 +02:00
5fe70196eb Basic WearOS app (#8396)
### Description

An initial minimal implementation for a Wear OS app. So far, the wear
app can only display episodes and start them on the phone. No standalone
features available yet.

Contributes to #4264

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint spotbugsPlayDebug spotbugsDebug`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-14 14:17:54 +02:00
c39cfc9719 Shorten queue subtitle (#8432)
### Description

Shorten queue subtitle. In German, it sometimes broke to two lines,
which looked super messy

### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint spotbugsPlayDebug spotbugsDebug`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-14 14:01:43 +02:00
188d756911 Tweak button design on home page (#8434)
### Description

Tweak button design on home page. We used text-based "arrows" (`»`).
Those don't work well depending on the language. Instead, use an actual
arrow icon.

Before/After:

<img width="200" alt="Screenshot_20260514-125712"
src="https://github.com/user-attachments/assets/da8c37c4-64c4-4904-986d-4df5020e7bc4"
/> <img width="200" alt="Screenshot_20260514-130130"
src="https://github.com/user-attachments/assets/3f527b42-b9cb-4aff-8eea-16c96e961661"
/>


### Checklist
<!-- 
To help us keep the issue tracker clean and work as efficient as
possible,
  please make sure that you have done all of the following.
You can tick the boxes below by placing an x inside the brackets like
this: [x]
-->
- [x] I have read the contribution guidelines:
https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request
- [x] I have performed a self-review of my code, going through my
changes line by line and carefully considering why this line change is
necessary
- [x] I have run the automated code checks using `./gradlew checkstyle
lint spotbugsPlayDebug spotbugsDebug`
- [x] My code follows the style guidelines of the AntennaPod project:
https://antennapod.org/contribute/develop/app/code-style
- [x] I have mentioned the corresponding issue and the relevant keyword
(e.g., "Closes: #xy") in the description (see
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
- [x] If it is a core feature, I have added automated tests
2026-05-14 13:48:41 +02:00