Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
8f30b8e
Preview cache: one prune at a time
professorDeveloper Oct 25, 2026
754d91a
Desktop player: a Telegram-style corner player inside the app
professorDeveloper Oct 25, 2026
1a77e24
Downloads: judge a web page by its bytes, not its Content-Type
professorDeveloper Oct 25, 2026
6d9484b
Player: recover from dropped connections, never load forever
professorDeveloper Oct 25, 2026
5255c90
CloudStream: search plugins that only implement paged search
professorDeveloper Oct 25, 2026
c8dc23a
Merge the Telegram-style desktop corner player
professorDeveloper Oct 25, 2026
a91d46f
Translations for the reconnect notice, the all-servers-failed message…
professorDeveloper Oct 25, 2026
69e75a5
Downloads: a page on one mirror no longer blocks the others
professorDeveloper Oct 25, 2026
9dc2e3c
Player: a file cut short by the network reports it; live reconnects a…
professorDeveloper Oct 25, 2026
1ba6ce8
Corner player: a route that gave its page away never builds it again
professorDeveloper Oct 25, 2026
9078b64
Repo: drop chat transcripts, a Gradle report and unused images
professorDeveloper Oct 26, 2026
f2ef3c7
Desktop PiP: float above other apps and full-screen Spaces when leaving
professorDeveloper Oct 26, 2026
08b0cdc
Player: a dropped audio or video packet no longer stops playback
professorDeveloper Oct 26, 2026
e20e7cf
Bottom bar: open the tapped tab in Arabic
professorDeveloper Oct 27, 2026
f274e17
Glass: one core for drawn Liquid Glass
professorDeveloper Oct 27, 2026
bfb68e7
Player: clear glass under the controls on iPhone
professorDeveloper Oct 27, 2026
7bd6837
Player: glass lock pill, haptics, system spinner on iPhone
professorDeveloper Oct 27, 2026
a473715
Downloads: fetch the file the way the player fetches it
professorDeveloper Oct 28, 2026
4c4d102
Episodes: one season at a time for sources that list them all
professorDeveloper Oct 28, 2026
3dc69af
My List: sort by recently added, oldest added or title
professorDeveloper Oct 28, 2026
f962bef
Relations: films and series get their franchise and TMDB's picks
professorDeveloper Oct 28, 2026
6a699f2
Other sources: Auto plays from the first source that has it
professorDeveloper Oct 28, 2026
08350a0
Downloads: Save to Downloads writes the video of an HLS download, not…
professorDeveloper Oct 30, 2026
f72a957
Reader: pinch zoom in the continuous mode
professorDeveloper Oct 30, 2026
3f65c26
My List: a catalogue title shows the catalogue's name, not cat:anilist
professorDeveloper Oct 30, 2026
dd89ba4
Seek preview: position / total on the card, and a host that stops ans…
professorDeveloper Oct 30, 2026
f0ef7e4
Seek preview: stop losing frames on slow hosts, and try a second decoder
professorDeveloper Oct 30, 2026
56a7791
Player: a source that says nothing about `accessible` is one it may try
professorDeveloper Oct 31, 2026
b0145ae
Support: a follow-up sends a newer report where one was attached
professorDeveloper Oct 31, 2026
13de069
Subtitles: say so when a translation stops part way
professorDeveloper Oct 31, 2026
09e0b3c
Translations: the source check's message and button were swapped
professorDeveloper Oct 31, 2026
287c556
Vietnamese: the interface, and subtitles found and translated in it
professorDeveloper Oct 31, 2026
491fa8a
Player: leave spliced-in ads out, unwrap image-wrapped segments, resp…
professorDeveloper Oct 31, 2026
2cdcb77
Vietnamese: long titles keep their tone marks
professorDeveloper Oct 31, 2026
2a762db
Windows Anime4K, local-proxy range handling, and honest source health…
professorDeveloper Nov 2, 2026
c21f870
Close the gaps the review left open: proxy ranges, and a title a sour…
professorDeveloper Nov 2, 2026
89b1a2e
Android glass measured rather than guessed, the system glass on iOS, …
professorDeveloper Nov 3, 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
46 changes: 43 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,52 @@ jobs:
- name: Analyzer
run: flutter analyze --no-fatal-infos

# Runs before the tests on purpose: a missing translation key is the one
# failure that reaches users looking like a rendering bug rather than a
# crash, and it costs a second to catch.
# Stays with the analyzer rather than with the tests, because it is the
# same kind of check: it reads the source and compares it against the arb
# files. A missing translation key is the one failure that reaches users
# looking like a rendering bug rather than a crash, and it costs a second
# to catch.
- name: Translation keys
run: dart run tool/check_translations.dart

# The tests used to be the last step of `analyze`, and that was misleading in
# a way that cost real time: the check list on a pull request said "analyze",
# so "CI is green" was the only thing a reader could conclude, and whether
# the suite had run at all was invisible. Worse, an analyzer error ended the
# job before `flutter test` was reached, so a red "analyze" could mean the
# tests failed, or that they never ran — the same signal for two different
# situations.
#
# A job of its own fixes both: the check is named "test", a green one means
# the suite passed, and the tests now run even when the analyzer is unhappy,
# so one push gets both verdicts instead of two pushes getting one each.
#
# THE TRADE, since it is not free: this job pays for its own checkout and its
# own `flutter pub get`, roughly a minute and a half of runner time that the
# single job did not spend. It is not a second SDK download — flutter-action's
# `cache: true` restores the same cache `analyze` populates — and because the
# two jobs now run side by side rather than one after the other, the wall
# clock a person waits on a pull request goes DOWN by about as much as the
# billed minutes go up. Paying ~1.5 runner-minutes to make a test result
# legible is the right side of that trade; paying it to re-download Flutter
# would not have been, which is why `cache: true` is not optional here.
test:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true

# The same reason as in `analyze`: `.env` is a declared pubspec asset and
# its absence fails the build before a single test runs.
- name: Create an empty .env
run: touch .env

- run: flutter pub get

- name: Tests
run: flutter test --reporter expanded

Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ migrate_working_dir/
.pub-cache/
.pub/
/build/
/android/build/
/coverage/

# Symbolication related
Expand Down Expand Up @@ -61,3 +62,6 @@ tool/lnreader_deps/package-lock.json
/docs/*
!/docs/images/
!/docs/releases/

# Exported chat transcripts (e.g. 2026-09-02-221911-....txt) stay local.
/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-*.txt
193 changes: 0 additions & 193 deletions 2026-09-02-221911-qara-qiladigan-ishimiz-quyidagicha-sozoni-toliq.txt

This file was deleted.

Loading
Loading