Skip to content

Commit c2cfbb0

Browse files
committed
chore: Prepare repository for F-Droid v3.7.2 release
1 parent fbe1e23 commit c2cfbb0

103 files changed

Lines changed: 1485 additions & 539 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/FUNDING.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,12 @@
1+
# These are supported funding model platforms
12

2-
liberapay: Helium314
3+
github: LeanBitLab
4+
patreon: # [username]
5+
open_collective: # [username]
6+
ko_fi: # [username]
7+
tidelift: # [platform-name/package-name]
8+
community_bridge: # [cloud-transport-project-name]
9+
liberapay: # [username]
10+
issuehunt: # [username]
11+
otechie: # [username]
12+
custom: # [https://url.to.your.custom.funding.page]

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,6 @@ signing.properties
2525
# Offline model files
2626
tokenizer.json
2727
node_modules
28+
29+
# Private Docs
30+
Pdoc/

README.md

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
# HeliboardL
1+
# LeanType
22

33
<picture>
4-
<source media="(prefers-color-scheme: dark)" srcset="docs/images/heliboardl_banner_dark.svg">
5-
<source media="(prefers-color-scheme: light)" srcset="docs/images/heliboardl_banner_light.svg">
6-
<img alt="HeliboardL Banner" src="docs/images/heliboardl_banner_light.svg">
4+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/leantype_banner_dark.svg">
5+
<source media="(prefers-color-scheme: light)" srcset="docs/images/leantype_banner_light.svg">
6+
<img alt="LeanType Banner" src="docs/images/leantype_banner_light.svg">
77
</picture>
88

9-
[![Download](https://img.shields.io/github/v/release/LeanBitLab/HeliboardL?label=Download&style=for-the-badge&color=7C4DFF)](https://github.com/LeanBitLab/HeliboardL/releases/latest) [![Downloads](https://img.shields.io/github/downloads/LeanBitLab/HeliboardL/total?style=for-the-badge&color=7C4DFF&label=Downloads)](https://github.com/LeanBitLab/HeliboardL/releases) [![Stars](https://img.shields.io/github/stars/LeanBitLab/HeliboardL?style=for-the-badge&color=7C4DFF)](https://github.com/LeanBitLab/HeliboardL/stargazers)
9+
[![Download](https://img.shields.io/github/v/release/LeanBitLab/LeanType?label=Download&style=for-the-badge&color=7C4DFF)](https://github.com/LeanBitLab/LeanType/releases/latest) [![Downloads](https://img.shields.io/github/downloads/LeanBitLab/LeanType/total?style=for-the-badge&color=7C4DFF&label=Downloads)](https://github.com/LeanBitLab/LeanType/releases) [![Stars](https://img.shields.io/github/stars/LeanBitLab/LeanType?style=for-the-badge&color=7C4DFF)](https://github.com/LeanBitLab/LeanType/stargazers)
1010

11-
**HeliboardL** is a fork of [HeliBoard](https://github.com/Helium314/HeliBoard) - a privacy-conscious and customizable open-source keyboard based on AOSP/OpenBoard.
11+
**LeanType** is a fork of [HeliBoard](https://github.com/Helium314/HeliBoard) - a privacy-conscious and customizable open-source keyboard based on AOSP/OpenBoard.
1212

1313
This fork adds **optional AI-powered features** using Gemini, Groq, and OpenAI-compatible APIs, offering a hybrid experience: a private, offline core with opt-in cloud intelligence.
1414

15-
## What's New in HeliboardL
15+
## What's New in LeanType
1616

1717
- **[🤖 Multi-Provider AI](docs/FEATURES.md#supported-ai-providers)** - Proofread using **Gemini**, **Groq** (Llama 3, Mixtral), or **OpenAI-compatible** providers.
1818
- **[🛡️ Offline AI](docs/FEATURES.md#5-offline-proofreading-privacy-focused)** - Private, on-device proofreading and translation using ONNX models (Offline build only).
@@ -25,6 +25,7 @@ This fork adds **optional AI-powered features** using Gemini, Groq, and OpenAI-c
2525
- **⚙️ Enhanced Customization** - Force auto-capitalization toggle, reorganized settings, and more.
2626
- **🕵️ Clear Incognito Mode** - Distinct "Hat & Glasses" icon for clear visibility.
2727
- **🔍 Clipboard Search** - Search through your clipboard history directly from the toolbar.
28+
- **🔎 Emoji Search** - Search for emojis by name. *Requires loading an Emoji Dictionary.*
2829
- **🔒 Privacy Choices** - Choose **Standard** (Opt-in AI), **Offline** (Hard-disabled network, offline model load), or **Offline Lite** (Minimalist, no AI) versions.
2930

3031
## Screenshots
@@ -90,7 +91,7 @@ For original feature documentation, visit the [HeliBoard Wiki](https://github.co
9091

9192
### AI Features Setup
9293

93-
HeliboardL supports multiple AI providers: **Google Gemini**, **Groq**, and **OpenAI-compatible** (OpenRouter, HuggingFace, etc.).
94+
LeanType supports multiple AI providers: **Google Gemini**, **Groq**, and **OpenAI-compatible** (OpenRouter, HuggingFace, etc.).
9495

9596
👉 **[Read the Full AI Setup & Features Guide](docs/FEATURES.md)**
9697

@@ -107,13 +108,13 @@ HeliboardL supports multiple AI providers: **Google Gemini**, **Groq**, and **Op
107108
108109
## Contributing
109110

110-
For issues specific to HeliboardL features, please open an issue in this repository.
111+
For issues specific to LeanType features, please open an issue in this repository.
111112

112113
For issues with core HeliBoard functionality, please report to the [original HeliBoard repository](https://github.com/Helium314/HeliBoard/issues).
113114

114115
## License
115116

116-
HeliboardL (as a fork of HeliBoard/OpenBoard) is licensed under **GNU General Public License v3.0**.
117+
LeanType (as a fork of HeliBoard/OpenBoard) is licensed under **GNU General Public License v3.0**.
117118

118119
See [LICENSE](/LICENSE) file.
119120

@@ -124,10 +125,23 @@ See [LICENSE](/LICENSE) file.
124125
- [OpenBoard](https://github.com/openboard-team/openboard)
125126
- [AOSP Keyboard](https://android.googlesource.com/platform/packages/inputmethods/LatinIME/)
126127
- Original icon by [Fabian OvrWrt](https://github.com/FabianOvrWrt)
128+
- All [HeliBoard Contributors](https://github.com/Helium314/HeliBoard/graphs/contributors)
127129

128-
### HeliboardL
130+
### LeanType
129131
- Built with ❤️ by [LeanBitLab](https://github.com/LeanBitLab)
130132

133+
## Support the Development
134+
135+
Building and maintaining privacy-focused, offline AI apps takes time and resources (test devices, server costs, etc.).
136+
137+
If you love LeanType, please consider supporting the project!
138+
139+
<a href="https://github.com/sponsors/LeanBitLab">
140+
<img src="https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86" width="150" alt="Sponsor on GitHub"/>
141+
</a>
142+
143+
Your support keeps the code **100% Free and Open Source**.
144+
131145
---
132146

133-
*HeliboardL • Privacy-focused keyboard with AI enhancements*
147+
*LeanType • Privacy-focused keyboard with AI enhancements*

app/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ android {
1919
compileSdk = 35
2020

2121
defaultConfig {
22-
applicationId = "helium314.keyboardl"
22+
applicationId = "com.leanbitlab.leantype"
2323
minSdk = 21
2424
targetSdk = 35
25-
versionCode = 3701
26-
versionName = "3.7.1"
25+
versionCode = 3702
26+
versionName = "3.7.2"
2727

2828
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
2929
}
@@ -102,7 +102,7 @@ android {
102102
if (number.isNotEmpty()) {
103103
outputs.all {
104104
val output = this as? com.android.build.gradle.api.ApkVariantOutput
105-
output?.outputFileName = "$number-HeliboardL_${defaultConfig.versionName}-${flavor}-${buildType.name}.apk"
105+
output?.outputFileName = "$number-LeanType_${defaultConfig.versionName}-${flavor}-${buildType.name}.apk"
106106
}
107107
}
108108
}

app/src/debug/res/values/strings.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
SPDX-License-Identifier: GPL-3.0-only
44
-->
55
<resources>
6-
<string name="english_ime_name" translatable="false">HeliboardL debug</string>
7-
<string name="spell_checker_service_name" translatable="false">HeliboardL debug Spell Checker</string>
8-
<string name="ime_settings" translatable="false">HeliboardL debug Settings</string>
6+
<string name="english_ime_name" translatable="false">LeanType debug</string>
7+
<string name="spell_checker_service_name" translatable="false">LeanType debug Spell Checker</string>
8+
<string name="ime_settings" translatable="false">LeanType debug Settings</string>
99

1010
</resources>

app/src/main/java/helium314/keyboard/keyboard/emoji/EmojiCategory.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ final class EmojiCategory {
5454
public final class CategoryProperties {
5555
public final int mCategoryId;
5656
private int mPageCount = -1;
57+
5758
public CategoryProperties(final int categoryId) {
5859
mCategoryId = categoryId;
5960
}
61+
6062
public int getPageCount() {
6163
if (mPageCount < 0)
6264
mPageCount = computeCategoryPageCount(mCategoryId);
@@ -101,7 +103,7 @@ public int getPageCount() {
101103
R.string.spoken_description_emoji_category_objects,
102104
R.string.spoken_description_emoji_category_symbols,
103105
R.string.spoken_description_emoji_category_flags,
104-
R.string.spoken_description_emoji_category_emoticons};
106+
R.string.spoken_description_emoji_category_emoticons };
105107

106108
private static final int[] sCategoryElementId = {
107109
KeyboardId.ELEMENT_EMOJI_RECENTS,
@@ -159,7 +161,8 @@ public void initialize() {
159161

160162
DynamicGridKeyboard recentsKbd = getKeyboard(EmojiCategory.ID_RECENTS, 0);
161163
mCurrentCategoryId = mPrefs.getInt(Settings.PREF_LAST_SHOWN_EMOJI_CATEGORY_ID, defaultCategoryId);
162-
mCurrentCategoryPageId = mPrefs.getInt(Settings.PREF_LAST_SHOWN_EMOJI_CATEGORY_PAGE_ID, Defaults.PREF_LAST_SHOWN_EMOJI_CATEGORY_PAGE_ID);
164+
mCurrentCategoryPageId = mPrefs.getInt(Settings.PREF_LAST_SHOWN_EMOJI_CATEGORY_PAGE_ID,
165+
Defaults.PREF_LAST_SHOWN_EMOJI_CATEGORY_PAGE_ID);
163166
if (!isShownCategoryId(mCurrentCategoryId)) {
164167
mCurrentCategoryId = defaultCategoryId;
165168
} else if (mCurrentCategoryId == EmojiCategory.ID_RECENTS &&
@@ -174,7 +177,7 @@ public void initialize() {
174177

175178
public void clearKeyboardCache() {
176179
mCategoryKeyboardMap.clear();
177-
for (CategoryProperties props: mShownCategories)
180+
for (CategoryProperties props : mShownCategories)
178181
props.mPageCount = -1; // reset page count in case size (number of keys per row) changed
179182
}
180183

@@ -359,8 +362,21 @@ private static Key[][] sortKeysGrouped(final List<Key> inKeys, final int maxPage
359362

360363
private static boolean canShowFlagEmoji() {
361364
Paint paint = new Paint();
362-
String switzerland = "\uD83C\uDDE8\uD83C\uDDED"; // U+1F1E8 U+1F1ED Flag for Switzerland
365+
String switzerland = "\uD83C\uDDE8\uD83C\uDDED"; // U+1F1E8 U+1F1ED Flag for Switzerland
363366
return PaintCompat.hasGlyph(paint, switzerland);
364367
}
365368

369+
public List<String> getAllEmojiKeys() {
370+
List<String> allEmojis = new ArrayList<>();
371+
// Iterate all static categories (1-10)
372+
for (int i = 1; i < sCategoryElementId.length; i++) {
373+
Keyboard kbd = mLayoutSet.getKeyboard(sCategoryElementId[i]);
374+
for (Key key : kbd.getSortedKeys()) {
375+
if (key != null && key.getOutputText() != null) {
376+
allEmojis.add(key.getOutputText());
377+
}
378+
}
379+
}
380+
return allEmojis;
381+
}
366382
}

0 commit comments

Comments
 (0)