7210 Commits

Author SHA1 Message Date
Vincent Velociter 87e234f6dd Fix potential race condition in friends screen 2026-05-01 12:54:17 +02:00
Tom Praschan 53d35c5887 feat: allow aligning the board on the right in tablet landscape mode (#3070)
Closes #1202
Closes #2447
2026-05-01 12:00:23 +02:00
Noah 01daad4e9f Add numbers to the broadcast game filters (#3082) 2026-05-01 11:58:01 +02:00
Noah ca9b75b76e less visible viewer badge + zen mode respected while playing (#3081)
* less visible viewer badge + zen mode respected while playing

Co-authored-by: Copilot <copilot@github.com>

* revert icon size

---------

Co-authored-by: Copilot <copilot@github.com>
2026-05-01 11:51:49 +02:00
Noah 6c192e7594 switch back to singleTop (#3080) 2026-04-30 17:52:34 +02:00
Vincent Velociter 730eed1409 Upgrade dependencies v0.23.9 2026-04-30 12:31:02 +02:00
Vincent Velociter 163a44c176 Bump version 2026-04-30 12:30:35 +02:00
Vincent Velociter a53e9d9517 New account menu (#3077) 2026-04-30 12:29:25 +02:00
Tom Praschan 8c94057de7 fix: order upcoming tournaments by start time first (#3078)
Also, use
https://pub.dev/documentation/collection/latest/collection/ComparatorExtension/then.html
to make the whole comparison chain a bit more elegant
2026-04-30 12:25:03 +02:00
Vincent Velociter 095bcacfc4 Bump version v0.23.8 2026-04-28 13:30:12 +02:00
Vincent Velociter 982b6c5dab Make settings / inbox more discoverable, especially on Android (#3065)
* Add account section to more tab, and remove drawer on android

* Put puzzle dashboard and history button as list tiles

* Remove redundant header when anon
2026-04-28 13:29:27 +02:00
Vincent Velociter 111741a090 Bump version 2026-04-28 11:45:13 +02:00
Vincent Velociter 084a2d454b Make it easier to find request server analysis (#3064) 2026-04-28 11:43:09 +02:00
Tom Praschan 26df922c5e refactor: simpler fix for #2564 and #2750 (#3058)
Previous fix was in #2859, but this PR fixes the root cause instead of
adding a workaround.

The root cause of this problem was that we check
`_game.serverAnalysis == null` to check if the RetroController needs to
trigger server analysis in case it isn't already running. When the
server analysis was already triggered by the `AnalysisController`, the
problem was that `archivedGameProvider` is not invalidated and still
returns `null` for the server analysis field. By using the
`GameRepository` directly instead, we get a fresh response from the
server which correctly has a non-null `serverAnalysis`.

An alternative fix would be to add
`red.invalidate(archivedGameProvider(gameId))` when a server analysis
request is triggered in the analysis screen, however this leads to the
analysis screen being rebuilt when triggering server analysis, which
causes a short flicker of the screen during the reload.

To verify that everything still works, I successfully tested the
following scenarios:

1) Trigger server analysis in analysis screen and immediately open
   "Learn From Your Mistakes"
   -> The loading bar correctly displays server analysis progress,
      once analysis is finished Learn from your mistakes is available.
2) Trigger server analysis in analysis screen, wait for it to finish
   and only then open "Learn From Your Mistakes"
   -> Learn from your mistakes is available immediately without any
      loading bar.
3) Trigger server analysis, wait for it to finish and then close the
   analysis screen. Open analysis again for the same game and open
  "Learn from your Mistakes".
   -> Learn from your mistakes is available immediately without any
      loading bar.
2026-04-28 10:40:20 +02:00
freebeartogoodhome 67bafd273d fix: dispose TextEditingController and remove listener in MessageInput (#3060) 2026-04-28 10:30:59 +02:00
RobertKuszmar ac693e23d7 Delay engine move until piece animation completes (#3061) 2026-04-28 10:29:15 +02:00
Noah c23e4c1603 fix puzzle nav bug on long press (#3062)
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 10:24:09 +02:00
Vincent Velociter 73a1ce3e34 Bump version v0.23.6 2026-04-27 15:26:01 +02:00
Vincent Velociter 672dbc536c Upgrade dependencies 2026-04-27 15:09:59 +02:00
Vincent Velociter 743d743c83 New translations 2026-04-27 15:09:41 +02:00
Noah 4c10e02cfb Ignore shared URLs in file processor (#3037)
* Ignore shared URLs in file processor

* simplify http check
2026-04-27 15:09:23 +02:00
Hendrik 6c9f43f311 Add regression test for imported game deep link (#3046) 2026-04-27 15:08:27 +02:00
github-actions[bot] dce985f69e New Crowdin lila sources and translations (#3053)
* New Crowdin translations by GitHub Action

* New Crowdin translations by GitHub Action

---------

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-04-27 15:07:43 +02:00
github-actions[bot] c4b0cc10be New Crowdin translations by GitHub Action (#3054)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-04-27 15:07:01 +02:00
Noah 4daf4264ff only display * for ongoing games (#3050) 2026-04-27 15:06:33 +02:00
Noah e17985211c fix errors in tv app link tests (#3051) 2026-04-27 15:05:42 +02:00
Vincent Velociter 8fc55521c0 Upgrade dependencies 2026-04-25 12:43:16 +02:00
freebeartogoodhome e6151a24a6 Small typo fix in recent_games debug message (#3040) 2026-04-25 12:42:50 +02:00
dependabot[bot] 2a5a4ca4c8 Bump addressable from 2.8.9 to 2.9.0 in /ios (#2921)
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.8.9 to 2.9.0.
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.8.9...addressable-2.9.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-version: 2.9.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 12:37:38 +02:00
dependabot[bot] 49732e7dcf Bump addressable from 2.8.8 to 2.9.0 in /android (#2920)
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.8.8 to 2.9.0.
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.8.8...addressable-2.9.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-version: 2.9.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 12:37:21 +02:00
dependabot[bot] 3b7f52bc36 Bump node-forge from 1.3.2 to 1.4.0 in /scripts/firebase (#2863)
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.3.2 to 1.4.0.
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.2...v1.4.0)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-version: 1.4.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 12:37:02 +02:00
dependabot[bot] 7fa623581c Bump softprops/action-gh-release in the ci-dependencies group (#2966)
Bumps the ci-dependencies group with 1 update: [softprops/action-gh-release](https://github.com/softprops/action-gh-release).


Updates `softprops/action-gh-release` from 2.6.1 to 3.0.0
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/153bb8e04406b158c6c84fc1615b65b24149a1fe...b4309332981a82ec1c5618f44dd2e27cc8bfbfda)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: ci-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 12:36:44 +02:00
dependabot[bot] 0704eb03ea Bump protobufjs and google-gax in /scripts/firebase (#3000)
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) and [google-gax](https://github.com/googleapis/google-cloud-node-core/tree/HEAD/packages/gax). These dependencies needed to be updated together.

Updates `protobufjs` from 7.2.6 to 7.5.5
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.2.6...protobufjs-v7.5.5)

Updates `google-gax` from 4.3.2 to 4.6.1
- [Release notes](https://github.com/googleapis/google-cloud-node-core/releases)
- [Changelog](https://github.com/googleapis/google-cloud-node-core/blob/main/packages/gax/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-cloud-node-core/commits/HEAD/packages/gax)

---
updated-dependencies:
- dependency-name: google-gax
  dependency-version: 4.6.1
  dependency-type: indirect
- dependency-name: protobufjs
  dependency-version: 7.5.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 12:36:19 +02:00
Dongruo Zhou 9595045632 Remove enableOnBackInvokedCallback from AndroidManifest (#3023)
Remove this line so that `enableOnBackInvokedCallback` falls back to the platform default: `false` on Android 14/15 and `true` on Android 16. This should resolve some of the current issues.
2026-04-25 12:35:52 +02:00
dependabot[bot] 1ba2f442a4 Bump fast-xml-parser from 5.5.7 to 5.7.1 in /scripts/firebase (#3035)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.7 to 5.7.1.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.7...v5.7.1)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.7.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 12:34:43 +02:00
Vincent Velociter 00949764ee Gen new translations 2026-04-25 12:34:22 +02:00
github-actions[bot] 9eab2da894 New Crowdin translations by GitHub Action (#3013)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-04-25 12:32:30 +02:00
github-actions[bot] cc90f3b2ef New Crowdin lila sources and translations (#3012)
* New Crowdin translations by GitHub Action

* New Crowdin translations by GitHub Action

---------

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-04-25 12:32:16 +02:00
Noah c2e4fbf677 feat: open imported games (#3043) 2026-04-25 12:19:56 +02:00
Noah 538f99e828 Add intent filter for sharing PGN files (#3039) 2026-04-25 12:17:32 +02:00
Noah 4a18193a26 allow malformed utf-8 in pgn (#3038) 2026-04-25 12:15:46 +02:00
Noah f38b8cc110 fix infinite loop triggered by imported game deeplinks (#3036) 2026-04-25 12:09:51 +02:00
Vincent Velociter f0a5a16a90 Merge branch 'CloudyDino-rating-filter-provisional-explanation' 2026-04-25 12:04:00 +02:00
Vincent Velociter 4a5e7bbdeb Add an info icon to the disabled rating filter button title 2026-04-25 11:59:41 +02:00
Amaan Marfatia 9cbc787edd Explain why the rating filter is disabled when tapped
The rating filter is disabled whenever the user's rating for the
selected perf is provisional. Previously the UI showed the filter as
greyed-out with no explanation, leaving users confused about why they
couldn't use it.

Tapping the disabled rating filter now opens an adaptive dialog with
the existing localized message
`ratingRangeIsDisabledBecauseYourRatingIsProvisional` explaining the
cause. Applied in both places the filter is rendered:

- The real-time lobby sheet (`create_game_widget.dart`) — the
  `OutlinedButton` now has an `onPressed` that shows the dialog when
  the filter is unavailable, with `foregroundColor` set to the theme's
  disabled color to preserve the greyed-out look.
- The inline `PlayRatingRange` widget (`common_play_widgets.dart`)
  used by the correspondence sheet — the disabled `ListTile` is wrapped
  in `IgnorePointer` + `GestureDetector(HitTestBehavior.opaque)` so the
  inner `NonLinearSlider` widgets cannot swallow the tap in the gesture
  arena.

A `SnackBar` was tried first but is invisible behind modal bottom
sheets (it anchors to the root `ScaffoldMessenger`), so a dialog route
is used instead — it pushes on top of the sheet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 11:59:41 +02:00
Vincent Velociter a98c1d3397 Revert "only display * for ongoing games (#2996)" (#3044)
This reverts commit 1dd5551353.
2026-04-25 11:55:44 +02:00
Vincent Velociter 4d1267dab2 Add an info icon to the disabled rating filter button title 2026-04-25 11:54:55 +02:00
Vincent Velociter 1820c47a5d Merge branch 'rating-filter-provisional-explanation' of https://github.com/CloudyDino/lichess-mobile into CloudyDino-rating-filter-provisional-explanation 2026-04-25 11:37:37 +02:00
freebeartogoodhome ed0d5ab605 Move OTB prefs to OTB directory (#3020) 2026-04-25 10:54:46 +02:00
freebeartogoodhome 10178a6691 Place deleteOldEntries in a transaction (#3027) 2026-04-25 10:52:51 +02:00