Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
62a4b91
Docs: note release 2025.2.16 for Android 5
UweTrottmann May 13, 2026
1551618
Changelog: fix heading for latest release
UweTrottmann May 13, 2026
28f6121
SgShow2: note that small poster is still used due to legacy data
UweTrottmann May 14, 2026
0356284
Lists: extract item UI model
UweTrottmann May 7, 2026
5efc912
Lists: migrate list items LiveData to Flow, fetch and map in background
UweTrottmann May 7, 2026
d34eeb5
DisplaySettings: inline saving ignore articles setting
UweTrottmann May 14, 2026
0356098
SgMovie: introduce constant for unknown release date
UweTrottmann May 14, 2026
6527f40
Follow-up: DisplaySettings: inline saving ignore articles setting
UweTrottmann May 21, 2026
95458d0
TmdbTools2: log details on getShowDetails error
UweTrottmann May 21, 2026
19dbcf1
CI: run for pull requests into release branches, always lint amzn
UweTrottmann May 21, 2026
3badac6
Merge branch 'releases/2026.1.5' into dev
UweTrottmann May 21, 2026
4bd332c
Movies in lists: support movies in manage lists dialog
UweTrottmann May 3, 2026
52aab03
Movies in lists: display manage lists button if movie is in database
UweTrottmann May 3, 2026
0c7d2bd
Lists: remove unused CONTENT_WITH_DETAILS_URI provider URI
UweTrottmann May 7, 2026
8213941
Lists: move query strings to SgListItemWithDetails
UweTrottmann May 7, 2026
677b091
Lists: move order clause to SgListItemWithDetails
UweTrottmann May 7, 2026
c54be78
Lists: query for movie list items
UweTrottmann May 7, 2026
073d11f
Lists: handle movie items in item context menu
UweTrottmann May 14, 2026
7584d65
Lists: support binding movie list items
UweTrottmann May 14, 2026
7049c73
Lists: support sort order for lists with movies
UweTrottmann May 7, 2026
4ffb447
Lists: display movie release date
UweTrottmann May 14, 2026
c6d245c
Lists: display movie running time
UweTrottmann May 14, 2026
54e4551
Lists: restore sort order options
UweTrottmann May 14, 2026
3e65e6f
Lists: move sort options to dialog
UweTrottmann May 14, 2026
6025b73
ListsDistillationSettings: convert sort order IDs to enum
UweTrottmann May 14, 2026
7193eb3
Lists: generalize latest/oldest order from episodes to release dates
UweTrottmann May 14, 2026
ddfced1
Lists: update empty message to include movies
UweTrottmann May 14, 2026
49b2a46
Import/Export: don't export legacy TVDB id for list items
UweTrottmann May 14, 2026
b42b598
Lists: support importing/exporting movie list items
UweTrottmann May 14, 2026
e9d13a0
JsonImportTask: use Room APIs to insert lists
UweTrottmann May 14, 2026
8372895
Lists: test importing lists
UweTrottmann May 14, 2026
a035ad8
Cloud: download all lists on app upgrade to get new movie items
UweTrottmann May 15, 2026
3e39a31
JsonImportTask: always release semaphore
UweTrottmann May 15, 2026
0d4ea9f
Rename .java to .kt
UweTrottmann May 15, 2026
ae8e6b9
Kotlin: convert ListsTools
UweTrottmann May 15, 2026
f8f05bb
ListsTools: inline ListsTools2
UweTrottmann May 15, 2026
a71ff57
DefaultValuesTest: check that primary keys are assigned
UweTrottmann May 15, 2026
6bdbe7b
BaseActionTask: doBackgroundAction can return non-null result
UweTrottmann May 15, 2026
c96dc6b
DefaultValuesTest: test list item
UweTrottmann May 15, 2026
6b02c11
MovieTools: make removeFromList an instance method
UweTrottmann Jun 5, 2026
f17d3ca
Kotlin: convert ChangeListItemListsTask
UweTrottmann May 15, 2026
c93fe90
MovieTools: pull db helpers into constructor for testing
UweTrottmann May 22, 2026
17a4f2e
Kotlin: convert RemoveListItemTask
UweTrottmann May 15, 2026
af3655d
MovieTools: test addToList makes the expected database update
UweTrottmann Jun 5, 2026
81cf2e2
Merge branch 'kotlin-liststools' into movies-in-lists
UweTrottmann Jun 11, 2026
1226dda
Dependencies: update mockito-core [4.11.0 -> 5.23.0]
UweTrottmann Apr 17, 2026
17380ba
MovieTools: extract download code to separate, mockable class
UweTrottmann Jun 5, 2026
82b8dca
MovieTools: test addToList adds the movie if not in database
UweTrottmann Jun 5, 2026
9930ff3
MovieTools: use Room API to insert single movie
UweTrottmann Jun 5, 2026
bfc2f9e
MovieTools: use Room API to bulk insert movies
UweTrottmann Jun 5, 2026
b2d89c9
TmdbSyncTest: use Room API to insert movie
UweTrottmann Jun 5, 2026
d7faf58
MovieHelper: pass in TMDB ID for insert
UweTrottmann Jun 11, 2026
ff01b51
MovieToolsTest: use actual database to test
UweTrottmann Jun 11, 2026
78b5b65
DefaultValuesTest: re-use test db instance
UweTrottmann Jun 11, 2026
fc75339
JsonImportTask: use Room API to insert movie
UweTrottmann Jun 11, 2026
2230f57
JsonImportTask: test importing movie (using actual database)
UweTrottmann Jun 11, 2026
7390044
JsonImportTask: actually don't import movies with missing TMDB ID
UweTrottmann Jun 11, 2026
94dbd9d
MovieToolsTest: test removing movie from list
UweTrottmann Jun 11, 2026
282b59e
HexagonListsSync: fix reference to delete task
UweTrottmann Jun 11, 2026
84d0285
Rename .java to .kt
UweTrottmann Jun 11, 2026
92c30fb
Kotlin: convert DeleteListTask
UweTrottmann Jun 11, 2026
5650e57
Merge branch 'testable-movietools' into movies-in-lists
UweTrottmann Jun 11, 2026
9511388
Movies in lists: add/delete from db also depending on custom lists
UweTrottmann May 22, 2026
4aa3e70
Movies in lists: re-use add/delete function when removing from list
UweTrottmann Jun 11, 2026
11c4da9
Movies in lists: test is updated if still on custom list
UweTrottmann Jun 11, 2026
f5fab64
Movies in lists: always show manage lists button
UweTrottmann Jun 11, 2026
b4a4f04
ManageListsDialogFragment: support movies not in database
UweTrottmann Jun 11, 2026
7514191
Merge branch 'kotlin-delete-list-task' into movies-in-lists
UweTrottmann Jun 11, 2026
3ecfc15
Movies in lists: delete from database if deleting whole list
UweTrottmann Jun 11, 2026
c7d9b67
MovieToolsTest: use real list (items) database
UweTrottmann Jun 12, 2026
a749ddb
Movies in lists: update movie database after syncing, update movies last
UweTrottmann Jun 12, 2026
bef5c38
MovieTools: drop no longer needed ContentProvider notifications
UweTrottmann Jun 12, 2026
ec87f13
Movies in lists: don't fail on list change if movie is already deleted
UweTrottmann Jun 12, 2026
9163dd2
MovieToolsTest: also directly assert not re-added after list change
UweTrottmann Jun 12, 2026
ffde898
Merge branch 'any-movies-in-lists' into movies-in-lists
UweTrottmann Jun 12, 2026
4579b61
Changelog: note movies in lists, no TVDB ID export, skip no TMDB ID
UweTrottmann Jun 18, 2026
9077e36
HexagonSettings: log resets
UweTrottmann Jun 18, 2026
3747810
Cloud: update lists download reset to any older than 2026.2
UweTrottmann Jun 18, 2026
6fce1a5
Movies in lists: add new strings
UweTrottmann Jun 18, 2026
c5aba79
Merge branch 'movies-in-lists' into dev
UweTrottmann Jun 18, 2026
1592e9d
Prepare version 2026.2.0 (23260200)
UweTrottmann Jun 18, 2026
68e71d4
Import latest translations
UweTrottmann Jun 18, 2026
733d363
Changelog: add new sort by dialog for lists
UweTrottmann Jun 18, 2026
b94ff06
Changelog: prepare for next release
UweTrottmann Jun 18, 2026
1f581b0
Shows: inline manage lists button for more comfortable use
UweTrottmann Jun 18, 2026
de39c09
Dependencies: update trakt-java 6.20.0 -> 6.20.1
UweTrottmann Jun 18, 2026
34b5a27
Bump dorny/test-reporter from 2.5.0 to 3.0.0
dependabot[bot] Apr 1, 2026
eef7a9d
Bump actions/upload-artifact from 6.0.0 to 7.0.1
dependabot[bot] May 1, 2026
d99e135
SgListHelper: remove unused releaseTimeOrDefault
UweTrottmann Jun 19, 2026
8ceab73
SgShow2: introduce a constant for unknown release time
UweTrottmann Jun 19, 2026
893e393
SeriesGuideContract: remove unused select statements
UweTrottmann Jun 19, 2026
23286bd
SeriesGuideDatabase: move qualified name constants to use sites
UweTrottmann Jun 19, 2026
cd0df02
Android Studio: 2026.1 code style updates
UweTrottmann Jun 19, 2026
7702797
AddUpdateShowTools: don't partially add show if adding episodes fails
UweTrottmann Jun 19, 2026
d491b76
Unit tests: add mockito-kotlin to get whenever instead of when
UweTrottmann Jun 19, 2026
35b402b
AddUpdateShowTools: extract GetEpisodesOfSeasonTools
UweTrottmann Jun 26, 2026
d0233e7
AddUpdateShowTools: test error while adding rolls back changes
UweTrottmann Jun 19, 2026
0ba5088
Merge branch 'shows-roll-back-on-add-failure' into dev
UweTrottmann Jun 26, 2026
219437b
Import latest translations
UweTrottmann Jun 26, 2026
0b225d2
Prepare version 2026.2.1 (23260201)
UweTrottmann Jun 26, 2026
46c556c
API: copy JobIntentService
UweTrottmann Jul 4, 2026
92dddbb
API: rename to SgJobIntentService and use for SeriesGuideExtension
UweTrottmann Jul 4, 2026
8c01683
Changelog: prepare for next release
UweTrottmann Jul 4, 2026
12fd270
SgJobIntentService: ignore if completing work item fails
UweTrottmann Jul 4, 2026
21ebe02
SgJobIntentService: add more helpful log output
UweTrottmann Jul 4, 2026
8a177b9
SeriesGuideExtension: don't auto-re-schedule jobs/work
UweTrottmann Jul 4, 2026
e2c7f56
Prepare version 2026.1.6 (23260107)
UweTrottmann Jul 4, 2026
65ff00b
Merge branch 'releases/2026.1.6' into dev
UweTrottmann Jul 4, 2026
ca39f6a
Import docs: add note for TV Time migration
UweTrottmann Jul 4, 2026
71aa7b7
Import latest translations
UweTrottmann Jul 4, 2026
67c544a
Prepare version 2026.2.2 (23260202)
UweTrottmann Jul 4, 2026
b265459
Changelog: also highlight moved manage list button
UweTrottmann Jul 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/build-test-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches:
- 'dev'
- 'main'
- 'releases/**'
workflow_dispatch: # Allow running manually from web UI

jobs:
Expand Down Expand Up @@ -33,7 +34,7 @@ jobs:
run: ./gradlew :app:testPureDebugUnitTest

- name: Test Report
uses: dorny/test-reporter@b082adf0eced0765477756c2a610396589b8c637 # v2.5.0
uses: dorny/test-reporter@a43b3a5f7366b97d083190328d2c652e1a8b6aa2 # v3.0.0
if: always() # also run if tests failed
with:
name: JUnit Report
Expand Down Expand Up @@ -62,11 +63,10 @@ jobs:
run: ./gradlew :app:lintPureRelease

- name: Lint amzn release
if: ${{ contains(github.ref, 'release') }}
run: ./gradlew :app:lintAmazonRelease

- name: Upload lint reports
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }} # also upload of lint errors
with:
name: Lint reports
Expand Down
25 changes: 0 additions & 25 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,40 @@
Releases marked with 🧪 (or previously with the "beta" suffix) were released on
[the preview program](https://www.seriesgui.de/help/how-to/basics/preview) only.

## Version 2026.2

* 🌟 Lists: movies can be added to lists, currently only from the details view.
* 🔧 Lists: sort options are displayed in their own dialog.
* 🔧 Shows: move manage lists button from more options menu to inside the overview and details tabs.

### 2026.2.2 - 2026-07-04

* 🔨 Potential fix to avoid a crash on Xiaomi and Honor devices when loading extensions due to aggressive system optimizations.
* 📝 Import latest user interface translations.

### 2026.2.1 - 2026-06-26 🧪

* 🔧 Shows: move manage lists button from more options menu to inside the overview and details tabs.
* 🔨 Trakt: downloading ratings also works if API returns rating 0.
* 🔨 Shows: when adding a show fails, roll back any database changes.
* 📝 Import latest user interface translations.

### 2026.2.0 - 2026-06-18 🧪

* 🌟 Lists: movies can be added to lists, currently only from the details view.
* 🔧 Lists: sort options are displayed in their own dialog.
* 🔨 Import: a failure no longer blocks trying again, adding shows or creating an auto backup.
* 🔨 Export: for list items, no longer include always 0 tvdb_id value.
* 🔨 Import: skip movies without a TMDB ID.

## Version 2026.1

* 📝 Trakt: support server changes to correctly fetch all collection and watchlist items.

### 2026.1.6 - 2026-07-04

* 🔨 Potential fix to avoid a crash on Xiaomi and Honor devices when loading extensions due to aggressive system optimizations.

### 2026.1.5 - 2026-05-21

* 🔨 Trakt: address unexpected server changes to correctly fetch watched special episodes.
Expand Down
18 changes: 9 additions & 9 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

```bash
# If it does not exist, create a release branch
git checkout -b releases/2026.1
git checkout -b releases/2026.2

# If it exists, merge latest changes
git checkout releases/2026.1
git checkout releases/2026.2
git merge dev
```

Expand All @@ -27,8 +27,8 @@
- Commit with the suggested message and push

```shell
git commit --all --message "Prepare version 2026.1.1 (23260101)"
git push --set-upstream origin releases/2026.1
git commit --all --message "Prepare version 2026.2.0 (23260101)"
git push --set-upstream origin releases/2026.2
```

- If it does not exist, [create a merge request](https://github.com/UweTrottmann/SeriesGuide/compare/main...) against `main`
Expand All @@ -49,10 +49,10 @@
- Tag release commit

```shell
git tag v2026.1.2
git push origin v2026.1.2
git tag v2026.2.0
git push origin v2026.2.0
git checkout dev
git merge releases/2026.1
git merge releases/2026.2
git push origin dev
```

Expand All @@ -65,7 +65,7 @@
- Merge release pull request to `main`
- Download universal APK from Play Store
- [Create GitHub release](https://github.com/UweTrottmann/SeriesGuide/releases/new)
- title like `SeriesGuide 2026.1.2`
- title like `SeriesGuide 2026.2.0`
- get release notes from [`CHANGELOG.md`](/CHANGELOG.md)
- attach APK
- Prepare release post on forum
Expand All @@ -77,5 +77,5 @@

```shell
git checkout dev
git merge --no-ff releases/2026.1
git merge --no-ff releases/2026.2
```
2 changes: 1 addition & 1 deletion api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ android {
}

dependencies {
implementation(libs.androidx.core)
implementation(libs.androidx.annotation)
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2014-2019 Uwe Trottmann
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright © 2014 Uwe Trottmann <uwe@uwetrottmann.com>

package com.battlelancer.seriesguide.api;

Expand Down Expand Up @@ -30,7 +30,6 @@
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.JobIntentService;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
Expand All @@ -45,7 +44,7 @@
* SeriesGuide. Actions may for example launch other apps or display interesting information related
* to an episode or movie.
*
* <p> Extensions are specialized {@link JobIntentService} classes in combination with a broadcast
* <p> Extensions are specialized {@code JobIntentService} classes in combination with a broadcast
* receiver.
*
* <p> Multiple extensions may be enabled within SeriesGuide at the same time. When a SeriesGuide
Expand Down Expand Up @@ -173,7 +172,7 @@
* <p> Based on code from <a href="https://github.com/romannurik/muzei">Muzei</a>, an awesome Live
* Wallpaper by Roman Nurik.
*/
public abstract class SeriesGuideExtension extends JobIntentService {
public abstract class SeriesGuideExtension extends SgJobIntentService {

private static final String TAG = "SeriesGuideExtension";

Expand Down Expand Up @@ -225,6 +224,13 @@ public void onCreate() {
loadLastAction();
}

@Override
public boolean onStopCurrentWork() {
// Don't re-schedule stopped work, the app will just display no extension and request it again if the
// episode or movie in question is shown again.
return false;
}

/**
* Convenience method for accessing preferences specific to the extension (with the given name
* within this package. The source name must be the one provided in the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
// Copyright 2017, 2018 Uwe Trottmann
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright © 2017 Uwe Trottmann <uwe@uwetrottmann.com>

package com.battlelancer.seriesguide.api;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import androidx.core.app.JobIntentService;

/**
* Base class to expose a {@link SeriesGuideExtension} service. See the documentation of {@link
Expand All @@ -22,8 +21,7 @@ public abstract class SeriesGuideExtensionReceiver extends BroadcastReceiver {
= "com.battlelancer.seriesguide.api.SeriesGuideExtension";

/**
* A unique job id within your app. Used to run the {@link SeriesGuideExtension} {@link
* JobIntentService}.
* A unique job id within your app. Used to run the {@link SeriesGuideExtension} job.
*/
protected abstract int getJobId();

Expand Down
Loading