merge: sync LeanBitLab/LeanType v4.1.8 - #149
Merged
Merged
Conversation
…rd keys and layout
…e vertical resize clipping
…ze live transform order
…loating width and height
…eyboard dimensions
…buttons with width and height
…n floating reload
…ng model downloader
…ied text or fails
… Translation Models manager dialog
…bstractMethodError
…n in Libraries Hub
…ure typing screen, remove duplicate gesture lib loader
…card in Libraries Hub
…ffline Voice Input architecture
…ers matching TranslationSettingsScreen
…ionSettingsScreen
…andwriting models dialog
…without disk duplication
…nd Android 8+ runtime guard
… user Android version
…import/download/deletion
…out regional variant duplication
…onal dialect models are installed
…rarchical model resolution architecture
…onical casing for ML Kit compatibility
…orkflows and README
…gate
translateAsync() gated the built-in-AI fallback on
ProofreadService.getApiKey(), which reads only the Gemini key
(KEY_API_KEY = "gemini_api_key"). With provider OPENAI (custom
OpenAI-compatible endpoint) or GROQ, that check returned false even
when the provider was fully configured, so every AI-fallback branch
short-circuited to Result.failure("Translation plugin not available")
with a misleading "Offline model not downloaded" toast - before any
network request was made.
Proofreading was unaffected because performAsyncOperation() performs a
provider-aware token check, and GGUF translation on the offline flavor
checks getModelPath() instead.
Fix: check the active provider's token (Gemini key / Groq token /
HuggingFace token) the same way.
Fixes LeanBitLab#459
Ref LeanBitLab#456
…er-key-check fix(translation): check active provider's token in translateAsync AI gate
…revent unwanted prompt output
…nslation model imports
…ge selectors across all pages
…tency SoundPool playback
…se notes and changelog
Preserve LeanTypeDual's four-flavor privacy model, fork release identity, bundled offline AI, two-thumb typing, and fallback gesture engine while integrating upstream v4.1.3-v4.1.8. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
devwith a real two-parent merge, covering v4.1.3-v4.1.8 (178 upstream commits)devas a separate follow-up mergeConflict and audit decisions
com.asafmah.leantypedual, version0.3.0/4300, and all four flavors;offlineremains minSdk 26 with bundled llama.cpp/GGUF, whileofflineliteremains minSdk 21 with no AIINTERNETonly instandardandstandardfull; restored offlinelite toolbar/settings exclusions and browser/import-only handling for network-backed dictionary/translation assetsSYSTEM_ALERT_WINDOWfor floating mode: requesting the special permission remains user-driven throughACTION_MANAGE_OVERLAY_PERMISSION, and docked operation/restoration does not require the grantValidation
python tools/check_fork_invariants.pypython -m unittest tools.tests.test_check_fork_invariants tools.tests.test_check_apk_invariants(22 tests)./gradlew compileOfflineRunTestsKotlin./gradlew :app:assembleStandardDebug :app:assembleStandardfullDebug :app:assembleOfflineDebug :app:assembleOfflineliteDebugINTERNETonly standard/standardfull;SYSTEM_ALERT_WINDOWall flavors; offline/offlinelite each include 18 main dictionaries includingmain_en-US.dict; standard/standardfull include noneSuggestTest,DictionaryGroupTest,InputLogicTest,SettingsContainerTestParserTestfailures, no new failures