diff --git a/.github/workflows/approve-translations.yml b/.github/workflows/approve-translations.yml deleted file mode 100644 index 027ece94d8..0000000000 --- a/.github/workflows/approve-translations.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Auto Approve Crowdin Translations - -on: - release: - types: [published] - workflow_dispatch: - -jobs: - approve-translations: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: '18' - - - name: Install Crowdin CLI - run: | - npm install -g @crowdin/cli@3 - - - name: Approve top-voted translations for all languages - env: - CROWDIN_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - run: | - set -e - - if [ -z "$CROWDIN_TOKEN" ] || [ -z "$CROWDIN_PROJECT_ID" ]; then - echo "Crowdin token or project id is missing!" - exit 1 - fi - - echo "Start automatic approval Crowdin Translation..." - - language_ids=$(crowdin api list-languages --project-id=$CROWDIN_PROJECT_ID --plain | jq -r '.data[].data.id' || true) - if [ -z "$language_ids" ]; then - echo "No language ids found, check Crowdin project or CLI output." - exit 1 - fi - - string_ids=$(crowdin api list-strings --project-id=$CROWDIN_PROJECT_ID --plain | jq -r '.data[].data.id' || true) - if [ -z "$string_ids" ]; then - echo "No string ids found, check Crowdin project or CLI output." - exit 1 - fi - - for lang in $language_ids; do - echo "Processing language $lang" - - translations=$(crowdin api list-string-translations --project-id=$CROWDIN_PROJECT_ID --language-id=$lang --plain) - - for sid in $string_ids; do - best=$(echo "$translations" | jq -r " - .data[] - | .data - | select(.stringId == \"$sid\" and .votes > 0) - | {\"id\": .id, \"votes\": .votes} - " | jq -s 'sort_by(-.votes) | .[0] | .id') - - if [ -n "$best" ] && [ "$best" != "null" ]; then - echo " → Approved translation $best for string $sid" - crowdin api edit-translation \ - --project-id=$CROWDIN_PROJECT_ID \ - --translation-id=$best \ - --approved=true - fi - done - done \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index f3c63b86ef..93aff66fde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ +## [4.0.0](https://github.com/sds100/KeyMapper/releases/tag/v4.0.0) + +#### 25 January 2026 + +See the changes in the previous beta releases for everything new. There is _a lot_. + ## [4.0.0 Beta 7](https://github.com/sds100/KeyMapper/releases/tag/v4.0.0-beta.07) -#### TO BE RELEASED +#### 18 January 2026 ## Added diff --git a/README.md b/README.md index 39e3af76e0..075e90633b 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,9 @@ CONSTRAINTS: You choose when key maps should run and when they shouldn't. Only n ## Links -Come say hi in our [Discord community!](http://keymapper.club) +Come say hi in our [Discord community!](http://keymapper.app/discord) -Read the [documentation!](https://docs.keymapper.club/?utm_source=github) +Read the [documentation!](https://keymapper.app/?utm_source=github) ## Translations @@ -74,4 +74,4 @@ Read the [documentation!](https://docs.keymapper.club/?utm_source=github) [![Star History Chart](https://api.star-history.com/svg?repos=keymapperorg/KeyMapper&type=Date)](https://www.star-history.com/#keymapperorg/KeyMapper&Date) ## Contributing There are many ways to help with this project. 😃 -Check out the contributing guide in the [documentation.](https://docs.keymapper.club/contributing/introduction/?utm_source=github) +Check out the contributing guide in the [documentation.](https://keymapper.app/contributing/introduction/?utm_source=github) diff --git a/app/version.properties b/app/version.properties index e7c52f41de..c11699a2d3 100644 --- a/app/version.properties +++ b/app/version.properties @@ -1,2 +1,2 @@ -VERSION_NAME=4.0.0-beta.07 -VERSION_CODE=237 +VERSION_NAME=4.0.0 +VERSION_CODE=238 diff --git a/base/src/main/assets/whats-new.txt b/base/src/main/assets/whats-new.txt index b2e727ee5c..3466af1254 100644 --- a/base/src/main/assets/whats-new.txt +++ b/base/src/main/assets/whats-new.txt @@ -9,6 +9,7 @@ You can now remap ALL buttons when the screen is off (including the power button • Modify any system setting • Show a custom notification • Toggle hotspot +• Toggle night shift 🆕 New Features • Redesigned Settings screen @@ -17,13 +18,13 @@ You can now remap ALL buttons when the screen is off (including the power button • Select notification and alarm sounds for Sound action • Constraints for keyboard is showing • Switch next to record trigger button to use PRO mode -• Make floating buttons movable and completely invisible -• Action to toggle night shift + ⚙️ Enhanced Controls • Enable or disable all key maps in a group at once • Intent API to enable, disable, or toggle individual key maps • Floating buttons can now appear on top of keyboard or in notification panel +• Make floating buttons movable and completely invisible 🔧 Improvements • Auto-switching keyboard more reliable and quicker on Android 13+