Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
167 commits
Select commit Hold shift + click to select a range
cbc1612
Use vswhere to locate vcredist dir (#31)
ale64bit Jul 2, 2025
251cc76
Add game client implementation submodules
ale64bit Jul 2, 2025
4eff38a
Setup private game client mechanism
ale64bit Jul 2, 2025
9ae6dee
Add submodule config to workflows
ale64bit Jul 3, 2025
25f6c97
Patch game clients on workflows
ale64bit Jul 3, 2025
6ce71db
Add MacOS build workflow
ale64bit Jul 3, 2025
f8e265b
Refactor exam pages into a reusable Widget
ale64bit Jul 6, 2025
9aa166b
Display a warning message when trying to restart a collection session…
Cidragon Jul 7, 2025
06ec385
Refresh collection page on leaving problem (#35)
Cidragon Jul 7, 2025
97b59a4
Add mode to try custom moves in tasks
ale64bit Jul 9, 2025
3e8e9f4
Add Custom Exam mode
ale64bit Jul 11, 2025
8c03b2e
Move TaskSource creation outside build
ale64bit Jul 11, 2025
a722969
Fix/remove broken tasks
ale64bit Jul 11, 2025
55e8df6
Add version patch mechanism
ale64bit Jul 12, 2025
307abcd
Bumb build version
ale64bit Jul 12, 2025
8f28068
Bump version
ale64bit Jul 14, 2025
6e15100
Move TaskSource setup to didChangeDependencies
ale64bit Jul 16, 2025
f44ef95
Fix #45: next button for topic puzzle (#48)
kingjuno Jul 16, 2025
45bf88b
Update CHANGELOG
ale64bit Jul 17, 2025
d024f94
Add board size option on confirm tap selected in behavior settings (#40)
Cidragon Jul 20, 2025
655ea01
Remove all tasks with inconsistent variation tree
ale64bit Jul 26, 2025
0f930f8
Fix Redo button bug on custom exams
ale64bit Jul 26, 2025
017b978
Update CHANGELOG
ale64bit Jul 26, 2025
fa23bd3
Improve behaviour settings description language
ale64bit Jul 27, 2025
1ac5821
Disable start custom exam if there are no tasks available
ale64bit Jul 27, 2025
4e9c5c3
Fix bottom app bar height for ranked and collection page
ale64bit Jul 28, 2025
6cdf20a
Add GameListener support
ale64bit Jul 28, 2025
0d5f5b5
Upgrade to stable channel and deps
ale64bit Jul 28, 2025
ca73a44
Update workflows to use latest stable
ale64bit Jul 28, 2025
4f8154d
Refactor routing and use named routes
ale64bit Jul 31, 2025
91b2136
Add 9x9 human-like AI bot (wip)
ale64bit Aug 11, 2025
83cc199
Use times unicode symbol instead of x for board size
ale64bit Aug 11, 2025
70c6949
Add additional theme config
ale64bit Aug 11, 2025
6b3f8bd
Split AI bot and estimator, update network
ale64bit Aug 12, 2025
3ce4c01
Mask the policy to skip moves too far away from top one
ale64bit Aug 13, 2025
416eab7
Add new themes by Pumu
ale64bit Aug 14, 2025
d8b38de
Add theme display name and plain gradient theme
ale64bit Aug 15, 2025
afd613d
Improve stats page
ale64bit Aug 15, 2025
f14ff23
Count only non-ignored mistakes for custom exams
ale64bit Aug 15, 2025
9b98fae
Add tflite library blob for MacOS
ale64bit Aug 16, 2025
4ff6837
Make train stats pull async
ale64bit Aug 16, 2025
5044ea6
Update share_plus usage
ale64bit Aug 16, 2025
3e936a3
Improve sound settings
ale64bit Aug 16, 2025
0237ee8
Update AI models
ale64bit Aug 18, 2025
865d330
Add TFLite support for Windows
ale64bit Aug 18, 2025
4c50e75
Remove unused import
ale64bit Aug 18, 2025
14b7bd7
Improve AI gameplay
ale64bit Aug 18, 2025
42168bd
Migrate to file_selector
ale64bit Aug 18, 2025
c0f8142
Use updated flutter_tflite fork
ale64bit Aug 19, 2025
5c34dde
Rename tflite library for MacOS
ale64bit Aug 19, 2025
378fa56
Rename tflite MacOS library
ale64bit Aug 19, 2025
0e71cc0
Add explicit tflite library to ISS installer
ale64bit Aug 19, 2025
d853c92
Fix Windows build for file_selector
ale64bit Aug 19, 2025
ce799e5
Fix tflite dll path on Windows
ale64bit Aug 19, 2025
b256603
Bump version
ale64bit Sep 2, 2025
c1837af
sgf: some tests and fixes (#65)
benjaminpjones Sep 2, 2025
312d4e7
OGS: Initial additions (#67)
benjaminpjones Sep 4, 2025
029712a
Add OGS wip client to the PROD client file
ale64bit Sep 4, 2025
89a52a3
Handle variations in GameRecord.fromSgf (#68)
benjaminpjones Sep 5, 2025
26069cf
feat: added BadukTV theme (#71)
SoumyaK4 Sep 12, 2025
e950f13
[OGS] Automatch & playing moves (#72)
benjaminpjones Sep 14, 2025
9f9d9b4
Fix passes and better logging (#73)
benjaminpjones Sep 16, 2025
6be2b43
[rfc] Add a "community" workflow (#75)
benjaminpjones Sep 18, 2025
ebf4c10
[ogs] 2-way socket communication (#74)
benjaminpjones Sep 18, 2025
a080747
Revert initialValue while Windows builds on an older version of Flutter
ale64bit Sep 18, 2025
d636f26
Add Flutter 3.32 to PR checks (#78)
benjaminpjones Sep 18, 2025
5e40297
Format and add CI step (#79)
benjaminpjones Sep 19, 2025
04cb524
OGS: handle gamedata message (#82)
benjaminpjones Sep 22, 2025
c80b2a9
Test OGSWebsocketManager.sendAndGetResponse (#81)
benjaminpjones Sep 24, 2025
53f56af
Fix tag rank ranges and add test for it
ale64bit Sep 24, 2025
5026a27
Setup basic l10n framework with some examples
ale64bit Sep 27, 2025
f30d022
Use RadioGroup.new ctor for backwards compat
ale64bit Sep 27, 2025
c83915d
Join and leave game chat (#89)
benjaminpjones Sep 28, 2025
9647013
Bump Windows Flutter version to latest stable
ale64bit Sep 28, 2025
d9073fe
Pin Windows worker to 2022
ale64bit Sep 28, 2025
7c3dabc
OGS: Accept stones (#91)
benjaminpjones Oct 2, 2025
ff14a50
More localization work
ale64bit Oct 2, 2025
fe018c5
Update submodules to latest commit on GH actions
ale64bit Oct 2, 2025
ade01d2
Clean up the message handler in OGSGame (#92)
benjaminpjones Oct 3, 2025
61884cb
More localization work
ale64bit Oct 3, 2025
4b48f52
[wip] More localization
ale64bit Oct 3, 2025
f148c62
Update README.md
ale64bit Oct 3, 2025
ac2cac7
Update auto-generated localization files
ale64bit Oct 4, 2025
b040c2a
Fix tag progress refresh on pop
ale64bit Oct 4, 2025
ab80219
Show current rank for topics
ale64bit Oct 4, 2025
310a0ba
OGS: Add clocks (#95)
benjaminpjones Oct 4, 2025
fba4938
OGS: Allow user to re-join a game (#94)
benjaminpjones Oct 4, 2025
6f01e2c
Fix UTC handling in exam stats
ale64bit Oct 4, 2025
b089850
Save SGF dialog localization
ale64bit Oct 4, 2025
d392095
Localize stat list events
ale64bit Oct 4, 2025
9c36fb3
Remove AI bot experimental feature
ale64bit Oct 5, 2025
1a1ec5d
Fix windows setup build
ale64bit Oct 5, 2025
0dc3f4d
Add help dialogs
ale64bit Oct 6, 2025
eca97a7
Update app_zh.arb (#97)
ItzReimu Oct 6, 2025
52372c9
[wip] Russian localization
ale64bit Oct 7, 2025
eade7c5
Update app_zh.arb (#98)
ItzReimu Oct 11, 2025
0d1e7cf
Update l10n autogenerated files
ale64bit Oct 11, 2025
d48bb5b
Use consistent font accross platforms
ale64bit Oct 11, 2025
de1c04c
Revert "Use consistent font accross platforms"
ale64bit Oct 11, 2025
03944a4
Switch to file_picker
ale64bit Oct 11, 2025
1c3ced9
Some hacks to avoid font issues
ale64bit Oct 11, 2025
266bd1d
ogs: connection status indicator (#100)
benjaminpjones Oct 13, 2025
3e8bbb7
ogs: modify scoring methods to reflect manual scoring (#99)
benjaminpjones Oct 14, 2025
84081c7
Add naive task pattern search
ale64bit Oct 14, 2025
4e5090c
Check a single ref stone when doing pattern matching
ale64bit Oct 14, 2025
6dfe5ec
Improve task pattern search
ale64bit Oct 17, 2025
0e69a44
Add identity to pattern search transforms
ale64bit Oct 18, 2025
6dfa245
Use initialStones rather than moves to avoid superko check
ale64bit Oct 18, 2025
82a59f2
Add version patch for 0.1.10
ale64bit Oct 18, 2025
6ff0717
Add more RU localizations
ale64bit Oct 18, 2025
abdf20c
Add more Spanish localizations
ale64bit Oct 18, 2025
ba81342
More Spanish and Russian localization
ale64bit Oct 18, 2025
adb567e
Complete Chinese, Russian and Spanish localization
ale64bit Oct 18, 2025
e3c4098
Update changelog
ale64bit Oct 18, 2025
2a01c59
Revert "Add OGS wip client to the PROD client file"
ale64bit Oct 18, 2025
e5fb419
Remove AI-bot assets
ale64bit Oct 19, 2025
743f7c4
Fix typo in Russian locale
ale64bit Oct 19, 2025
d9a08d2
Try to workaround iPad issue with share_plus
ale64bit Oct 19, 2025
34dda72
Bump version to 0.1.11
ale64bit Oct 20, 2025
9511619
Fix some tag ranges
ale64bit Oct 20, 2025
3752fd0
ogs: Handle handicap (#102)
benjaminpjones Oct 21, 2025
7f9e65e
Add Romanian localization (#103)
adudenamedruby Oct 23, 2025
3c1b97d
Auto-generate Romanian localization files
ale64bit Oct 23, 2025
84cd3de
[wip] Add manual counting support
ale64bit Oct 23, 2025
2e2ecd7
Fix scoring - typo in ws message (#104)
benjaminpjones Oct 24, 2025
16304bd
Add OGS resignation #54
ale64bit Oct 24, 2025
4dbf606
Merge branch 'main' of github.com:ale64bit/WeiqiHub
ale64bit Oct 24, 2025
a59cf93
OGS: handle game/:id/phase message (#105)
benjaminpjones Oct 25, 2025
d9589bd
ogs | Mark stones in ownership (#107)
benjaminpjones Oct 26, 2025
fbaf10c
Display area/territory according to game ruleset
ale64bit Oct 27, 2025
749a105
Add "Copy SGF" functionality to task menu (#106)
hemme Oct 28, 2025
daa7059
ogs | autoscore at the start of scoring phase (#108)
benjaminpjones Oct 28, 2025
4c18dfb
Track Time Frenzy mistakes - implements issue #109 (#110)
hemme Nov 2, 2025
84a3228
Add OGS to the PROD file (#120)
benjaminpjones Nov 2, 2025
5b6562a
Option to show errors as crosses (solves tzumego issue on b/w devices…
hemme Nov 2, 2025
bc21dfb
Add a layer on top of the OGS HTTP client (#118)
benjaminpjones Nov 2, 2025
a7d453a
Add winner to game result (#123)
benjaminpjones Nov 3, 2025
d1d009f
Add Italian l10n (no taskTags, no themes) (#111)
hemme Nov 5, 2025
d7cb7e4
Display fast automatch presets better
ale64bit Nov 5, 2025
cf7c773
Update CHANGELOG
ale64bit Nov 5, 2025
50662e6
Update Android project tooling versions
ale64bit Nov 5, 2025
f826c5f
Feature/italian l10n (#125)
hemme Nov 6, 2025
1e47144
[ogs] disable autoscore (#129)
benjaminpjones Nov 9, 2025
a69a55c
Feature/italian l10n (#126)
hemme Nov 9, 2025
0a08cbd
German Localization - just the .arb file (#132)
InfoKendoKing Nov 9, 2025
986fbd5
Autogenerate DE localization changes
ale64bit Nov 9, 2025
89c25e1
OGS: Extract chat presence into ChatPresenceManager. (#128)
benjaminpjones Nov 9, 2025
3e96c85
Replace Board Listener with GestureDetector for more flexibility
ale64bit Nov 11, 2025
13ac5c0
Add dismissible task board area
ale64bit Nov 11, 2025
a7c47f3
Fix time zone issue in daily task stats
ale64bit Nov 11, 2025
ca1872b
Fix board interactivity for preview tiles
ale64bit Nov 14, 2025
9e11af6
Apply random symmetry tranformation to tasks (#119)
hemme Nov 14, 2025
7259b8d
Update CHANGELOG
ale64bit Nov 14, 2025
60d1017
Fix handling empty list of games
ale64bit Nov 14, 2025
e57a685
Minor corrections for Italian localization (#140)
hemme Nov 15, 2025
9c1027c
Handle handicap in fromSgf (#139)
benjaminpjones Nov 15, 2025
3ebe265
Update descriptions for OGS to match Tygem and Fox (#143)
benjaminpjones Nov 15, 2025
e6a9304
German localization with tasks (#144)
InfoKendoKing Nov 16, 2025
73fb421
Update autogenerated localization files
ale64bit Nov 16, 2025
d066a64
Update README.md
ale64bit Nov 16, 2025
92c6cb2
Update dependencies
ale64bit Nov 16, 2025
280ce82
Fix deprecated member usage
ale64bit Nov 16, 2025
f0e59c8
Correct fuse dependency for Linux workflow
ale64bit Nov 16, 2025
06d0c6f
Upgrade Ubuntu runner
ale64bit Nov 16, 2025
6b5a7b1
Revert "Upgrade Ubuntu runner"
ale64bit Nov 16, 2025
a3cc085
Revert to sqlite3 2.9.4
ale64bit Nov 16, 2025
a6aae6d
Add "Remove from mistakes" option to SingleTaskPage with localization…
hemme Nov 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 14 additions & 4 deletions .github/workflows/build_linux.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
name: Build Linux
on: [push]
name: Build Linux (Production)
on:
push:
branches: [ main ]
jobs:
build:
name: "Build"
runs-on: ubuntu-22.04
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
token: ${{ secrets.WQHUB_TOKEN }}
submodules: 'recursive'
- name: Update submodules
run: git submodule update --init --remote --recursive
- name: Install linux dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev libasound2-dev binutils coreutils desktop-file-utils fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-setuptools squashfs-tools strace util-linux zsync
sudo apt-get install -y ninja-build libgtk-3-dev libasound2-dev binutils coreutils desktop-file-utils fakeroot libfuse2 libgdk-pixbuf2.0-dev patchelf python3-pip python3-setuptools squashfs-tools strace util-linux zsync
- name: Setup appimagetool
run: |
sudo wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /opt/appimagetool
Expand All @@ -21,11 +28,14 @@ jobs:
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.27.4
- name: Install Flutter dependencies
run: flutter pub get
- name: Create debug symbols directory
run: mkdir -p out/linux
- name: Patch game client
run: |
rm lib/game_client/game_client_list.dart
mv lib/game_client/game_client_list.dart.PROD lib/game_client/game_client_list.dart
- name: Run tests
run: flutter test
- name: Build
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/build_macos.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Build MacOS (Production)
on:
push:
branches: [ main ]
jobs:
build:
name: "Build"
runs-on: macos-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
token: ${{ secrets.WQHUB_TOKEN }}
submodules: 'recursive'
- name: Update submodules
run: git submodule update --init --remote --recursive
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Install Flutter dependencies
run: flutter pub get
- name: Create debug symbols directory
run: mkdir -p out/macos
- name: Patch game client
run: |
rm lib/game_client/game_client_list.dart
mv lib/game_client/game_client_list.dart.PROD lib/game_client/game_client_list.dart
- name: Run tests
run: flutter test
- name: Build
run: flutter build macos --obfuscate --split-debug-info=out/macos
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: WeiqiHub-macos.app
path: build/macos/Build/Products/Release/wqhub.app
retention-days: 7
- name: Upload debug symbols
uses: actions/upload-artifact@v4
with:
name: debug-symbols-macos
path: out/macos
retention-days: 7
36 changes: 31 additions & 5 deletions .github/workflows/build_windows.yaml
Original file line number Diff line number Diff line change
@@ -1,29 +1,55 @@
name: Build Windows
on: [push]
name: Build Windows (Production)
on:
push:
branches: [ main ]
jobs:
build:
name: "Build"
runs-on: windows-latest
runs-on: windows-2022
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
token: ${{ secrets.WQHUB_TOKEN }}
submodules: 'recursive'
- name: Update submodules
run: git submodule update --init --remote --recursive
- name: Find VC Redist Path
id: find_vcredist
shell: pwsh
run: |
$allPaths = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -find "VC\Redist\MSVC\**\x64\Microsoft.VC143.CRT\msvcp140.dll"
$standardPath = $allPaths | Where-Object {
$_ -like "*\x64\Microsoft.VC143.CRT\*" -and
$_ -notlike "*\spectre\*" -and
$_ -notlike "*\onecore\*"
} | Select-Object -First 1
if (-not $standardPath) {
$standardPath = $allPaths | Select-Object -First 1
}
$dir = [System.IO.Path]::GetDirectoryName($standardPath)
echo "VCRedistPath=$dir" >> $env:GITHUB_OUTPUT
echo "VC Redist dir: $dir"
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.27.4
- name: Install Flutter dependencies
run: flutter pub get
- name: Create debug symbols directory
run: mkdir -p out/windows
- name: Patch game client
run: |
rm lib/game_client/game_client_list.dart
mv lib/game_client/game_client_list.dart.PROD lib/game_client/game_client_list.dart
- name: Run tests
run: flutter test
- name: Build
run: flutter build windows --obfuscate --split-debug-info=out/windows
- name: Copy setup description file
run: cp windows/setup.iss build/windows/
- name: Create setup
run: ISCC /O"out" "build/windows/setup.iss"
run: ISCC /DVCRedistPath="${{ steps.find_vcredist.outputs.VCRedistPath }}" /O"out" "build/windows/setup.iss"
- name: Upload Windows setup
uses: actions/upload-artifact@v4
with:
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/community_ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@

name: Community CI (No Private Dependencies)

# This workflow provides essential validation for pull requests and pushes,
# including those from external contributors. It runs:
# - Static code analysis (flutter analyze)
# - Unit tests (flutter test)
#
# What it DOESN'T run:
# - Cross-platform builds (Linux/macOS/Windows)
# - Production builds with private game clients (FoxWQ, Tygem)
# - Builds requiring private submodules or tokens
#
# This ensures fast feedback for contributors while keeping the essential
# quality checks that catch most issues.

on:
pull_request:
branches: [ main ]
push:
branches: [ main ]

jobs:
test:
name: "Static Analysis & Tests (${{ matrix.flutter-name }})"
runs-on: ubuntu-latest
strategy:
matrix:
include:
- flutter-version: ''
flutter-name: 'Latest Stable'
steps:
- name: Check out repository code
uses: actions/checkout@v4

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: ${{ matrix.flutter-version }}

- name: Install Flutter dependencies
run: flutter pub get

- name: Check code formatting
run: dart format --set-exit-if-changed .

- name: Analyze code
run: flutter analyze

- name: Run tests
run: flutter test
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,6 @@ out/

# Flutter platform-specific dirs
web/

# Localization
untranslated-messages.txt
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "lib/game_client/foxwq"]
path = lib/game_client/foxwq
url = https://github.com/ale64bit/WeiqiHub_foxwq.git
[submodule "lib/game_client/tygem"]
path = lib/game_client/tygem
url = https://github.com/ale64bit/WeiqiHub_tygem.git
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,47 @@
# Changelog

## 0.1.11
- OGS support (@benjaminpjones)
- add setting to track Time Frenzy mistakes (@hemme)
- add option to copy task SGF (@hemme)
- accessibility: add setting to show wrong moves as crosses (@hemme)
- Italian localization (@hemme)
- Romanian localization (@adudenamedruby)
- German localization (@StHagel, @InfoKendoKing)
- next task can be triggered with a swipe gesture where applicable
- add setting for randomizing task orientation (@hemme)

## 0.1.10
- now available in Chinese (simplified), Russian and Spanish
- add task search by pattern
- add help dialogs for several pages
- show current rank for each topic
- fix topic progress display bug when returning to topic page
- fix timezone bug in statistics
- new theme: BadukTV
- remove experimental 9x9 human-like AI bot
- remove a few broken tasks

## 0.1.9
- add Next button for topic exams
- fix: redo button bug on custom exams
- fix: disable start custom exam if there are no tasks available
- fix: custom exam reports more mistakes than available
- fix many broken tasks
- improve overall routing/navigation
- improve statistics page: daily/weekly/monthly stats
- new themes by Pumu
- experimental: 9x9 human-like AI bot
- improved sound settings

## 0.1.8
- add file picker dialog to save games on desktop
- add task topics
- fix: starting a collection warns about ongoing sessions
- fix: collections page refreshes after exiting current session
- add mode to try custom moves in tasks
- add Custom Exam mode
- fix several broken tasks

## 0.1.7
- hotfix for Windows game downloads
Expand Down
21 changes: 17 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,35 @@
</h1>

[![Build Linux](https://github.com/ale64bit/WeiqiHub/actions/workflows/build_linux.yaml/badge.svg)](https://github.com/ale64bit/WeiqiHub/actions/workflows/build_linux.yaml)
[![Build MacOS](https://github.com/ale64bit/WeiqiHub/actions/workflows/build_macos.yaml/badge.svg)](https://github.com/ale64bit/WeiqiHub/actions/workflows/build_macos.yaml)
[![Build Windows](https://github.com/ale64bit/WeiqiHub/actions/workflows/build_windows.yaml/badge.svg)](https://github.com/ale64bit/WeiqiHub/actions/workflows/build_windows.yaml)

WeiqiHub is a unified client to multiple Go servers and offline puzzle solving.

## Features
- Local board
- Play on Fox Weiqi (unofficial client)
- Play on Tygem (unofficial client)
- Solve tsumego (no internet required):
- Play:
* Fox Weiqi (unofficial client)
* Tygem (unofficial client)
* OGS
- Train (no internet required):
* Grading Exam: sets of 10 problems of the same rank, each with a 45s time limit. Solve at least 8 to pass (a.k.a. "guan").
* Endgame Exam: sets of 10 endgame problems of the same rank, each with a 45s time limit. Solve at least 8 to pass.
* Time Frenzy: solve as many problems as possible within 3 minutes. Difficulty increases the more you solve. If you make 3 mistakes, you are out.
* Ranked Mode: solve problems without a time limit. Difficulty increases the more/faster you solve.
* Collections: solve classic curated collections of problems without a time limit to improve your reading strength.
* Topics: solve problems across various topics and ranks.
* Custom Exam: solve problems from a customized set of topics, collections or from your mistakes
- Keep track of your solve stats and mistakes

## Development

A working installation of Flutter is needed. To run the app in debug mode, use `flutter run` or the Run button in VSCode.
A working installation of Flutter is needed. To run the app in debug mode, use `flutter run` or the Run button in VSCode.

### Localization

In order to localize parts of, or the whole app, to another language contributors are encouraged to modify/add the translation files. Each supported locale is stored as a `app_$LOCALE.arb` file under [lib/l10n](lib/l10n). The [English language](lib/l10n/app_en.arb) serves as the template and is a good starting point when translating to a new language.

Feel free to open PRs with localization contributions/fixes if you are a developer. If you are not a developer, feel free to send me new/modified `.arb` files directly.

You can read more about the syntax and use of the localization framework [here](https://docs.flutter.dev/ui/accessibility-and-internationalization/internationalization).
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
4 changes: 2 additions & 2 deletions android/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ pluginManagement {

plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.2.1" apply false
id "org.jetbrains.kotlin.android" version "1.8.22" apply false
id "com.android.application" version "8.6.0" apply false
id "org.jetbrains.kotlin.android" version "2.1.0" apply false
}

include ":app"
Binary file added assets/images/board/baduktv.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/stones/baduktv_b.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/stones/baduktv_w.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/tasks/15_0.bin
Binary file not shown.
Binary file added assets/tasks/15_0.idx
Binary file not shown.
Binary file modified assets/tasks/15_1.bin
Binary file not shown.
Binary file added assets/tasks/15_1.idx
Binary file not shown.
Binary file modified assets/tasks/15_2.bin
Binary file not shown.
Binary file added assets/tasks/15_2.idx
Binary file not shown.
Binary file modified assets/tasks/15_3.bin
Binary file not shown.
Binary file added assets/tasks/15_3.idx
Binary file not shown.
Empty file added assets/tasks/15_4.idx
Empty file.
Empty file added assets/tasks/15_5.idx
Empty file.
Empty file added assets/tasks/15_6.idx
Empty file.
Binary file modified assets/tasks/15_7.bin
Binary file not shown.
Binary file added assets/tasks/15_7.idx
Binary file not shown.
Binary file modified assets/tasks/15_8.bin
Binary file not shown.
Binary file added assets/tasks/15_8.idx
Binary file not shown.
Binary file modified assets/tasks/15_9.bin
Binary file not shown.
Binary file added assets/tasks/15_9.idx
Binary file not shown.
Binary file modified assets/tasks/16_0.bin
Binary file not shown.
Binary file added assets/tasks/16_0.idx
Binary file not shown.
Binary file modified assets/tasks/16_1.bin
Binary file not shown.
Binary file added assets/tasks/16_1.idx
Binary file not shown.
Binary file modified assets/tasks/16_2.bin
Binary file not shown.
Binary file added assets/tasks/16_2.idx
Binary file not shown.
Binary file modified assets/tasks/16_3.bin
Binary file not shown.
Binary file added assets/tasks/16_3.idx
Binary file not shown.
Empty file added assets/tasks/16_4.idx
Empty file.
Empty file added assets/tasks/16_5.idx
Empty file.
Empty file added assets/tasks/16_6.idx
Empty file.
Binary file modified assets/tasks/16_7.bin
Binary file not shown.
Binary file added assets/tasks/16_7.idx
Binary file not shown.
Binary file modified assets/tasks/16_8.bin
Binary file not shown.
Binary file added assets/tasks/16_8.idx
Binary file not shown.
Binary file added assets/tasks/16_9.idx
Binary file not shown.
Binary file modified assets/tasks/17_0.bin
Binary file not shown.
Binary file added assets/tasks/17_0.idx
Binary file not shown.
Binary file modified assets/tasks/17_1.bin
Binary file not shown.
Binary file added assets/tasks/17_1.idx
Binary file not shown.
Binary file modified assets/tasks/17_2.bin
Binary file not shown.
Binary file added assets/tasks/17_2.idx
Binary file not shown.
Binary file modified assets/tasks/17_3.bin
Binary file not shown.
Binary file added assets/tasks/17_3.idx
Binary file not shown.
Empty file added assets/tasks/17_4.idx
Empty file.
Empty file added assets/tasks/17_5.idx
Empty file.
Empty file added assets/tasks/17_6.idx
Empty file.
Binary file modified assets/tasks/17_7.bin
Binary file not shown.
Binary file added assets/tasks/17_7.idx
Binary file not shown.
Binary file modified assets/tasks/17_8.bin
Binary file not shown.
Binary file added assets/tasks/17_8.idx
Binary file not shown.
Binary file modified assets/tasks/17_9.bin
Binary file not shown.
Binary file added assets/tasks/17_9.idx
Binary file not shown.
Binary file modified assets/tasks/18_0.bin
Binary file not shown.
Binary file added assets/tasks/18_0.idx
Binary file not shown.
Binary file modified assets/tasks/18_1.bin
Binary file not shown.
Binary file added assets/tasks/18_1.idx
Binary file not shown.
Binary file modified assets/tasks/18_2.bin
Binary file not shown.
Binary file added assets/tasks/18_2.idx
Binary file not shown.
Binary file modified assets/tasks/18_3.bin
Binary file not shown.
Binary file added assets/tasks/18_3.idx
Binary file not shown.
Empty file added assets/tasks/18_4.idx
Empty file.
Empty file added assets/tasks/18_5.idx
Empty file.
Empty file added assets/tasks/18_6.idx
Empty file.
Binary file modified assets/tasks/18_7.bin
Binary file not shown.
Binary file added assets/tasks/18_7.idx
Binary file not shown.
Binary file modified assets/tasks/18_8.bin
Binary file not shown.
Binary file added assets/tasks/18_8.idx
Binary file not shown.
Binary file modified assets/tasks/18_9.bin
Binary file not shown.
Binary file added assets/tasks/18_9.idx
Binary file not shown.
Binary file modified assets/tasks/19_0.bin
Binary file not shown.
Binary file added assets/tasks/19_0.idx
Binary file not shown.
Binary file modified assets/tasks/19_1.bin
Binary file not shown.
Binary file added assets/tasks/19_1.idx
Binary file not shown.
Binary file modified assets/tasks/19_2.bin
Binary file not shown.
Binary file added assets/tasks/19_2.idx
Binary file not shown.
Binary file modified assets/tasks/19_3.bin
Binary file not shown.
Binary file added assets/tasks/19_3.idx
Binary file not shown.
Binary file added assets/tasks/19_4.idx
Binary file not shown.
Binary file added assets/tasks/19_5.idx
Binary file not shown.
Empty file added assets/tasks/19_6.idx
Empty file.
Binary file modified assets/tasks/19_7.bin
Binary file not shown.
Binary file added assets/tasks/19_7.idx
Binary file not shown.
Binary file modified assets/tasks/19_8.bin
Binary file not shown.
Binary file added assets/tasks/19_8.idx
Binary file not shown.
Binary file modified assets/tasks/19_9.bin
Binary file not shown.
Binary file added assets/tasks/19_9.idx
Binary file not shown.
Binary file modified assets/tasks/20_0.bin
Binary file not shown.
Binary file added assets/tasks/20_0.idx
Binary file not shown.
Binary file modified assets/tasks/20_1.bin
Binary file not shown.
Binary file added assets/tasks/20_1.idx
Binary file not shown.
Binary file modified assets/tasks/20_2.bin
Binary file not shown.
Binary file added assets/tasks/20_2.idx
Binary file not shown.
Binary file modified assets/tasks/20_3.bin
Binary file not shown.
Binary file added assets/tasks/20_3.idx
Binary file not shown.
Binary file modified assets/tasks/20_4.bin
Binary file not shown.
Binary file added assets/tasks/20_4.idx
Binary file not shown.
Binary file modified assets/tasks/20_5.bin
Binary file not shown.
Binary file added assets/tasks/20_5.idx
Binary file not shown.
Empty file added assets/tasks/20_6.idx
Empty file.
Binary file modified assets/tasks/20_7.bin
Binary file not shown.
Binary file added assets/tasks/20_7.idx
Binary file not shown.
Binary file modified assets/tasks/20_8.bin
Binary file not shown.
Binary file added assets/tasks/20_8.idx
Binary file not shown.
Binary file modified assets/tasks/20_9.bin
Binary file not shown.
Binary file added assets/tasks/20_9.idx
Binary file not shown.
Binary file modified assets/tasks/21_0.bin
Binary file not shown.
Binary file added assets/tasks/21_0.idx
Binary file not shown.
Binary file modified assets/tasks/21_1.bin
Binary file not shown.
Binary file added assets/tasks/21_1.idx
Binary file not shown.
Binary file modified assets/tasks/21_2.bin
Binary file not shown.
Binary file added assets/tasks/21_2.idx
Binary file not shown.
Binary file modified assets/tasks/21_3.bin
Binary file not shown.
Binary file added assets/tasks/21_3.idx
Binary file not shown.
Binary file added assets/tasks/21_4.idx
Binary file not shown.
Binary file added assets/tasks/21_5.idx
Binary file not shown.
Empty file added assets/tasks/21_6.idx
Empty file.
Binary file modified assets/tasks/21_7.bin
Binary file not shown.
Binary file added assets/tasks/21_7.idx
Binary file not shown.
Binary file modified assets/tasks/21_8.bin
Binary file not shown.
Binary file added assets/tasks/21_8.idx
Binary file not shown.
Binary file modified assets/tasks/21_9.bin
Binary file not shown.
Binary file added assets/tasks/21_9.idx
Binary file not shown.
Binary file modified assets/tasks/22_0.bin
Binary file not shown.
Binary file added assets/tasks/22_0.idx
Binary file not shown.
Binary file modified assets/tasks/22_1.bin
Binary file not shown.
Binary file added assets/tasks/22_1.idx
Binary file not shown.
Binary file modified assets/tasks/22_2.bin
Binary file not shown.
Binary file added assets/tasks/22_2.idx
Binary file not shown.
Binary file modified assets/tasks/22_3.bin
Binary file not shown.
Binary file added assets/tasks/22_3.idx
Binary file not shown.
Binary file modified assets/tasks/22_4.bin
Binary file not shown.
Binary file added assets/tasks/22_4.idx
Binary file not shown.
Binary file modified assets/tasks/22_5.bin
Binary file not shown.
Binary file added assets/tasks/22_5.idx
Binary file not shown.
1 change: 1 addition & 0 deletions assets/tasks/22_6.idx
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3��(.��q6Y@����B��-�6g@mk����
Binary file modified assets/tasks/22_7.bin
Binary file not shown.
Binary file added assets/tasks/22_7.idx
Binary file not shown.
Binary file modified assets/tasks/22_8.bin
Binary file not shown.
Binary file added assets/tasks/22_8.idx
Binary file not shown.
Binary file modified assets/tasks/22_9.bin
Binary file not shown.
Binary file added assets/tasks/22_9.idx
Binary file not shown.
Binary file modified assets/tasks/23_0.bin
Binary file not shown.
Binary file added assets/tasks/23_0.idx
Binary file not shown.
Binary file modified assets/tasks/23_1.bin
Binary file not shown.
Binary file added assets/tasks/23_1.idx
Binary file not shown.
Binary file modified assets/tasks/23_2.bin
Binary file not shown.
Binary file added assets/tasks/23_2.idx
Binary file not shown.
Binary file modified assets/tasks/23_3.bin
Binary file not shown.
Binary file added assets/tasks/23_3.idx
Binary file not shown.
Binary file modified assets/tasks/23_4.bin
Binary file not shown.
Binary file added assets/tasks/23_4.idx
Binary file not shown.
Binary file added assets/tasks/23_5.idx
Binary file not shown.
Empty file added assets/tasks/23_6.idx
Empty file.
Binary file modified assets/tasks/23_7.bin
Binary file not shown.
Binary file added assets/tasks/23_7.idx
Binary file not shown.
Binary file modified assets/tasks/23_8.bin
Binary file not shown.
Binary file added assets/tasks/23_8.idx
Binary file not shown.
Binary file modified assets/tasks/23_9.bin
Binary file not shown.
Binary file added assets/tasks/23_9.idx
Binary file not shown.
Binary file modified assets/tasks/24_0.bin
Binary file not shown.
Binary file added assets/tasks/24_0.idx
Binary file not shown.
Binary file modified assets/tasks/24_1.bin
Binary file not shown.
Binary file added assets/tasks/24_1.idx
Binary file not shown.
Binary file modified assets/tasks/24_2.bin
Binary file not shown.
Binary file added assets/tasks/24_2.idx
Binary file not shown.
Binary file modified assets/tasks/24_3.bin
Binary file not shown.
Binary file added assets/tasks/24_3.idx
Binary file not shown.
Binary file modified assets/tasks/24_4.bin
Binary file not shown.
Binary file added assets/tasks/24_4.idx
Binary file not shown.
Binary file modified assets/tasks/24_5.bin
Binary file not shown.
Binary file added assets/tasks/24_5.idx
Binary file not shown.
Empty file added assets/tasks/24_6.idx
Empty file.
Binary file modified assets/tasks/24_7.bin
Binary file not shown.
Binary file added assets/tasks/24_7.idx
Binary file not shown.
Binary file modified assets/tasks/24_8.bin
Binary file not shown.
Binary file added assets/tasks/24_8.idx
Binary file not shown.
Binary file modified assets/tasks/24_9.bin
Binary file not shown.
Binary file added assets/tasks/24_9.idx
Binary file not shown.
Binary file modified assets/tasks/25_0.bin
Binary file not shown.
Binary file added assets/tasks/25_0.idx
Binary file not shown.
Binary file modified assets/tasks/25_1.bin
Binary file not shown.
Binary file added assets/tasks/25_1.idx
Binary file not shown.
Binary file modified assets/tasks/25_2.bin
Binary file not shown.
Binary file added assets/tasks/25_2.idx
Binary file not shown.
Binary file modified assets/tasks/25_3.bin
Binary file not shown.
Binary file added assets/tasks/25_3.idx
Binary file not shown.
Binary file modified assets/tasks/25_4.bin
Binary file not shown.
Binary file added assets/tasks/25_4.idx
Binary file not shown.
Binary file modified assets/tasks/25_5.bin
Binary file not shown.
Binary file added assets/tasks/25_5.idx
Binary file not shown.
1 change: 1 addition & 0 deletions assets/tasks/25_6.idx
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ߺ;���u?Y̽Ң�^���6o��M闱�{��{ߺ;���|7Y��Ң�Z���2}��M���s��{ߺ:��#h'Y��҂#Z���6��Uk���7�
Binary file modified assets/tasks/25_7.bin
Binary file not shown.
Binary file added assets/tasks/25_7.idx
Binary file not shown.
Binary file modified assets/tasks/25_8.bin
Binary file not shown.
Binary file added assets/tasks/25_8.idx
Binary file not shown.
Binary file modified assets/tasks/25_9.bin
Binary file not shown.
Binary file added assets/tasks/25_9.idx
Binary file not shown.
Binary file modified assets/tasks/26_0.bin
Binary file not shown.
Binary file added assets/tasks/26_0.idx
Binary file not shown.
Binary file modified assets/tasks/26_1.bin
Binary file not shown.
Binary file added assets/tasks/26_1.idx
Binary file not shown.
Binary file modified assets/tasks/26_2.bin
Binary file not shown.
Binary file added assets/tasks/26_2.idx
Binary file not shown.
Binary file modified assets/tasks/26_3.bin
Binary file not shown.
Binary file added assets/tasks/26_3.idx
Binary file not shown.
Binary file modified assets/tasks/26_4.bin
Binary file not shown.
Binary file added assets/tasks/26_4.idx
Binary file not shown.
Binary file modified assets/tasks/26_5.bin
Binary file not shown.
Binary file added assets/tasks/26_5.idx
Binary file not shown.
Binary file modified assets/tasks/26_6.bin
Binary file not shown.
1 change: 1 addition & 0 deletions assets/tasks/26_6.idx
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ߺ;���}?Y��Ң�Z���6��}闳�{��y����ct7X��Ң�Z���2ɭ]���S��ߺ;���}?Y��Ң�Z���6��]뗳�{��
Binary file modified assets/tasks/26_7.bin
Binary file not shown.
Binary file added assets/tasks/26_7.idx
Binary file not shown.
Binary file modified assets/tasks/26_8.bin
Binary file not shown.
Binary file added assets/tasks/26_8.idx
Binary file not shown.
Binary file modified assets/tasks/26_9.bin
Binary file not shown.
Binary file added assets/tasks/26_9.idx
Binary file not shown.
Binary file modified assets/tasks/27_0.bin
Binary file not shown.
Binary file added assets/tasks/27_0.idx
Binary file not shown.
Binary file modified assets/tasks/27_1.bin
Binary file not shown.
Binary file added assets/tasks/27_1.idx
Binary file not shown.
Binary file modified assets/tasks/27_2.bin
Binary file not shown.
Binary file added assets/tasks/27_2.idx
Binary file not shown.
Binary file modified assets/tasks/27_3.bin
Binary file not shown.
Binary file added assets/tasks/27_3.idx
Binary file not shown.
Binary file modified assets/tasks/27_4.bin
Binary file not shown.
Binary file added assets/tasks/27_4.idx
Binary file not shown.
Binary file modified assets/tasks/27_5.bin
Binary file not shown.
Binary file added assets/tasks/27_5.idx
Binary file not shown.
Binary file modified assets/tasks/27_6.bin
Binary file not shown.
2 changes: 2 additions & 0 deletions assets/tasks/27_6.idx
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{߲;��s}7Y��Ң�Z����>��U�3�s��{ߺ;���|?Y̼Ң�Z���6��]闓�{��ߺ;����?Y��Ң�Z���6��}럳�{����������?[��ӣ�^����>��}�������{ߺ:��#u3Y��҂�Z���2o��M���s��{��
��#|?Y���"�B���>��]띡�:��2_:(>��l3I ��Z��,�"mIiD���6�ߺ+���l?[��Ӣ�^���6��]뗣�{���_�*��c|7Y��"�J���6��}럱�ZV�{ߺ;���t3Y̽Ң�Z���6��]����{ߺ;���|?Y��Ң�Z���2��]뗳�s��{ߺ;|��t7Y��҂�Z���2}��]���S��{ߺ:���m7Y��Ң�Z��͗2��U���r��;ߺ;~��|7Y��҂�Z���2}��]뗓�S��{��;��3|?Y��҂�J���6��]���{��
Binary file modified assets/tasks/27_7.bin
Binary file not shown.
Binary file added assets/tasks/27_7.idx
Binary file not shown.
Binary file modified assets/tasks/27_8.bin
Binary file not shown.
Binary file added assets/tasks/27_8.idx
Binary file not shown.
Binary file modified assets/tasks/27_9.bin
Binary file not shown.
Binary file added assets/tasks/27_9.idx
Binary file not shown.
Binary file modified assets/tasks/28_0.bin
Binary file not shown.
Binary file added assets/tasks/28_0.idx
Binary file not shown.
Binary file modified assets/tasks/28_1.bin
Binary file not shown.
Binary file added assets/tasks/28_1.idx
Binary file not shown.
Binary file modified assets/tasks/28_2.bin
Binary file not shown.
Binary file added assets/tasks/28_2.idx
Binary file not shown.
Binary file modified assets/tasks/28_3.bin
Binary file not shown.
Binary file added assets/tasks/28_3.idx
Binary file not shown.
Binary file modified assets/tasks/28_4.bin
Binary file not shown.
Binary file added assets/tasks/28_4.idx
Binary file not shown.
Binary file modified assets/tasks/28_5.bin
Binary file not shown.
Binary file added assets/tasks/28_5.idx
Binary file not shown.
Binary file modified assets/tasks/28_6.bin
Binary file not shown.
Binary file added assets/tasks/28_6.idx
Binary file not shown.
Binary file modified assets/tasks/28_7.bin
Binary file not shown.
Binary file added assets/tasks/28_7.idx
Binary file not shown.
Binary file modified assets/tasks/28_8.bin
Binary file not shown.
Binary file added assets/tasks/28_8.idx
Binary file not shown.
Binary file modified assets/tasks/28_9.bin
Binary file not shown.
Binary file added assets/tasks/28_9.idx
Binary file not shown.
Binary file modified assets/tasks/29_0.bin
Binary file not shown.
Binary file added assets/tasks/29_0.idx
Binary file not shown.
Binary file modified assets/tasks/29_1.bin
Binary file not shown.
Binary file added assets/tasks/29_1.idx
Binary file not shown.
Binary file modified assets/tasks/29_2.bin
Binary file not shown.
Binary file added assets/tasks/29_2.idx
Binary file not shown.
Binary file modified assets/tasks/29_3.bin
Binary file not shown.
Binary file added assets/tasks/29_3.idx
Binary file not shown.
Binary file modified assets/tasks/29_4.bin
Binary file not shown.
Binary file added assets/tasks/29_4.idx
Binary file not shown.
Binary file modified assets/tasks/29_5.bin
Binary file not shown.
Binary file added assets/tasks/29_5.idx
Binary file not shown.
Binary file modified assets/tasks/29_6.bin
Binary file not shown.
Binary file added assets/tasks/29_6.idx
Binary file not shown.
Binary file modified assets/tasks/29_7.bin
Binary file not shown.
Binary file added assets/tasks/29_7.idx
Binary file not shown.
Binary file modified assets/tasks/29_8.bin
Binary file not shown.
Binary file added assets/tasks/29_8.idx
Binary file not shown.
Binary file modified assets/tasks/29_9.bin
Binary file not shown.
Binary file added assets/tasks/29_9.idx
Binary file not shown.
Binary file modified assets/tasks/30_0.bin
Binary file not shown.
Binary file added assets/tasks/30_0.idx
Binary file not shown.
Binary file modified assets/tasks/30_1.bin
Binary file not shown.
Binary file added assets/tasks/30_1.idx
Binary file not shown.
Binary file modified assets/tasks/30_2.bin
Binary file not shown.
Binary file added assets/tasks/30_2.idx
Binary file not shown.
Binary file modified assets/tasks/30_3.bin
Binary file not shown.
Binary file added assets/tasks/30_3.idx
Binary file not shown.
Binary file modified assets/tasks/30_4.bin
Binary file not shown.
Binary file added assets/tasks/30_4.idx
Binary file not shown.
Binary file modified assets/tasks/30_5.bin
Binary file not shown.
Binary file added assets/tasks/30_5.idx
Binary file not shown.
Loading