Skip to content

Commit 7fbe1bc

Browse files
authored
Updates documentation (#536)
1 parent ff926aa commit 7fbe1bc

3 files changed

Lines changed: 88 additions & 16 deletions

File tree

PRIVACY.md

Lines changed: 74 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Privacy Policy
22

33
**Effective Date:** October 18, 2025
4-
**Last Updated:** January 9, 2026
4+
**Last Updated:** January 25, 2026
55

66
## Introduction
77

@@ -51,6 +51,56 @@ For privacy inquiries, contact us at the email above.
5151

5252
**Fallback:** If your device does not have a lock screen configured, learned words are stored without encryption, and you will see a warning about this in the app.
5353

54+
### 1A. Word Frequency Tracking (Encrypted)
55+
56+
**What:** Per-word usage frequency counters stored separately from learned words.
57+
58+
**Purpose:** To rank suggestions by your actual typing patterns and boost frequently used words.
59+
60+
**Storage:** Encrypted local SQLCipher database on your device using hardware-backed encryption (Android Keystore).
61+
62+
**Details Stored:**
63+
- Word (normalized)
64+
- Language code
65+
- Frequency counter (incremented on each use)
66+
- Timestamp (last used)
67+
68+
**What We Don't Store:**
69+
- Typed sentences or context
70+
- Which app you used the word in
71+
- Any identifying information
72+
73+
**Data Persistence:** Word frequency data is NOT included in dictionary exports. It remains local-only and is deleted on app uninstall.
74+
75+
**Encryption:** Same AES-256 encryption as learned words. Protected by Android Keystore and device lock screen.
76+
77+
### 1B. Next-Word Prediction Bigrams (Encrypted)
78+
79+
**What:** Word pairs (bigrams) that track which words you commonly type after other words.
80+
81+
**Purpose:** To provide context-aware next-word predictions. For example, if you frequently type "thank you," the keyboard learns this pattern and suggests "you" after "thank."
82+
83+
**Storage:** Encrypted local SQLCipher database on your device using hardware-backed encryption (Android Keystore).
84+
85+
**Details Stored:**
86+
- First word (normalized)
87+
- Second word (normalized)
88+
- Language code
89+
- Frequency counter (how often this pair occurs)
90+
- Timestamp (last used)
91+
92+
**What We Don't Store:**
93+
- Full sentences or paragraphs
94+
- Word triplets or longer sequences
95+
- Which app you typed the words in
96+
- Any identifying information
97+
98+
**Technical Implementation:** The bigram model is local-only with no external queries. Predictions are generated using indexed database lookups ordered by frequency. Debounced batch writes (300ms) minimize database operations.
99+
100+
**Data Isolation:** Bigram data is NOT included in dictionary exports. It remains strictly local and is deleted on app uninstall. Standard dictionary words from SymSpell corpus are not tracked in bigrams.
101+
102+
**Encryption:** Same AES-256 encryption as learned words. Protected by Android Keystore and device lock screen.
103+
54104
### 2. Clipboard History (Encrypted)
55105

56106
**What:** Text content copied to your device's system clipboard from any app.
@@ -192,20 +242,26 @@ For privacy inquiries, contact us at the email above.
192242
- Last ~200 typed words (automatically cleared after 5 minutes)
193243
- Spell check results cache
194244
- Dictionary lookup cache
245+
- User word frequency cache (LRU cache, max 1000 entries)
246+
- Bigram prediction cache (LRU cache, max 500 entries)
247+
- Preloaded top bigrams (in-memory map, cleared on language switch)
195248

196249
**Lifecycle:** Automatically cleared when:
197-
- Data expires (5-minute time-to-live)
250+
- Data expires (5-minute time-to-live for typed words)
251+
- Cache size limits exceeded (LRU eviction)
198252
- You switch languages
199253
- You switch to a different app
200254
- The keyboard service stops
201255

202-
**Secure Fields:** When you type in password fields or other secure inputs, all processing is bypassed. No text is cached, spell-checked, or learned.
256+
**Secure Fields:** When you type in password fields or other secure inputs, all processing is bypassed. No text is cached, spell-checked, or learned. Bigram predictions are not recorded.
203257

204258
## How We Use Your Data
205259

206260
All data processing occurs locally on your device:
207261

208262
- **Learned Words:** Generate personalized suggestions and autocorrect
263+
- **Word Frequency Tracking:** Rank suggestions by your actual usage patterns
264+
- **Next-Word Prediction Bigrams:** Provide context-aware predictions based on word pairs
209265
- **Clipboard History:** Quick access to recently copied text for re-use
210266
- **Recent Emoji Selections:** Display frequently used emojis first in emoji picker
211267
- **Custom Key Mappings:** Insert your assigned symbols on long-press
@@ -219,6 +275,7 @@ All data processing occurs locally on your device:
219275
- Sell or share your data with third parties
220276
- Build user profiles or track behavior
221277
- Use analytics or telemetry services
278+
- Track standard dictionary words in bigram or frequency tables
222279

223280
## Data Storage and Security
224281

@@ -244,14 +301,14 @@ The keyboard automatically detects password fields, credit card inputs, email ad
244301

245302
## Data Retention
246303

247-
### Learned Words
304+
### Learned Words, Word Frequencies, and Bigram Predictions
248305
- **Retention:** Indefinite, until you manually delete them or uninstall the app
249306
- **Management Options:**
250-
- Export dictionary: Settings → Privacy & Data → Export Dictionary
307+
- Export dictionary: Settings → Privacy & Data → Export Dictionary (exports `learned_words` table only; word frequencies and bigrams remain local)
251308
- Import dictionary: Settings → Privacy & Data → Import Dictionary
252-
- Clear all learned words: Settings → Privacy & Data → Clear Learned Words
309+
- Clear all learned words: Settings → Privacy & Data → Clear Learned Words (also clears frequency and bigram data)
253310
- Reset settings to defaults: Settings → Privacy & Data → Reset to Defaults
254-
- Uninstall app: Automatically deletes all data
311+
- Uninstall app: Automatically deletes all data (learned words, frequencies, and bigrams)
255312

256313
### Clipboard History
257314
- **Retention:** Indefinite for pinned items; unpinned items auto-deleted after 100 items reached (oldest first)
@@ -289,6 +346,8 @@ The keyboard automatically detects password fields, credit card inputs, email ad
289346
### On Uninstall
290347
When you uninstall Urik, Android automatically deletes:
291348
- All learned words (encrypted database)
349+
- All word frequency data (encrypted database)
350+
- All bigram prediction data (encrypted database)
292351
- All clipboard history (encrypted database)
293352
- All custom key mappings (encrypted database)
294353
- All recent emoji selections
@@ -307,15 +366,17 @@ You have the right to:
307366
- View clipboard history: Long-press symbols key on keyboard
308367
- View custom key mappings: Settings → Layout & Input → Customize Keys
309368
- View error logs: Settings → Privacy & Data → Export Error Logs
310-
- Your learned words, clipboard history, and custom key mappings are stored locally on your device in an encrypted database
369+
- Export learned words: Settings → Privacy & Data → Export Dictionary
370+
- Your learned words, word frequencies, bigram predictions, clipboard history, and custom key mappings are stored locally on your device in an encrypted database
371+
- **Note:** Word frequency counters and bigram prediction data are used internally for suggestion ranking and cannot be viewed directly through the UI
311372

312373
2. **Delete Your Data**
313374
- Clear specific learned words: Long-press suggestions to remove
314375
- Clear specific clipboard items: Long-press symbols key → tap × button
315376
- Clear all clipboard unpinned items: Long-press symbols key → Recent tab → Delete All
316377
- Reset custom key mappings: Settings → Layout & Input → Customize Keys → Reset All
317-
- Clear all learned words: Settings → Privacy & Data → Clear Learned Words
318-
- Clear all data (includes clipboard and mappings): Settings → Privacy & Data → Clear All Data
378+
- Clear all learned words: Settings → Privacy & Data → Clear Learned Words (also clears word frequencies and bigram predictions)
379+
- Clear all data (includes learned words, frequencies, bigrams, clipboard, and mappings): Settings → Privacy & Data → Clear All Data
319380
- Uninstall the app to delete everything
320381

321382
3. **Rectify Your Data**
@@ -327,6 +388,7 @@ You have the right to:
327388
- Import learned words: Settings → Privacy & Data → Import Dictionary
328389
- Export format: JSON file containing word, language, frequency, and timestamps
329390
- Import behavior: Merges with existing dictionary (sums frequencies for duplicates)
391+
- **Data Isolation:** Word frequency counters and bigram predictions are NOT exported and remain local-only.
330392
- **Note:** Exported files are not encrypted. Store securely if they contain sensitive words.
331393

332394
5. **Withdraw Consent**
@@ -431,6 +493,8 @@ Under GDPR Article 6, our legal bases for processing your personal data are:
431493

432494
1. **Consent (Article 6(1)(a)):**
433495
- Word learning: By using the keyboard with word learning enabled
496+
- Word frequency tracking: By using the keyboard with word learning enabled
497+
- Bigram prediction: By using the keyboard with word learning enabled
434498
- Clipboard monitoring: By continuing to use the keyboard after first install with clipboard monitoring enabled by default (opt-out consent model)
435499
2. **Legitimate Interest (Article 6(1)(f)):** We have a legitimate interest in processing error logs to maintain and improve the keyboard
436500

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,20 @@ Privacy-focused Android keyboard with swipe typing, custom layouts, and password
2323
## Features
2424

2525
**Input**
26-
- Swipe typing with geometric path matching
27-
- One-handed and split modes
26+
- Swipe typing with geometric path matching and vertex detection
27+
- One-handed and split modes with coordinate transformation
2828
- Long-press for character variations and custom key mapping
29+
- Long-press comma key to switch keyboards (IME picker)
2930
- Spacebar swipe for cursor control
3031
- QWERTZ, AZERTY, Dvorak, Colemak, and Workman layouts
3132
- Hardware keyboard detection
3233

3334
**Intelligence**
35+
- Local bigram model for next-word prediction
3436
- On-device spell checking using SymSpell algorithm
3537
- Smart autocorrect for URLs, emails, and punctuation context
3638
- Word learning with encrypted SQLCipher database
39+
- User-specific word frequency tracking
3740
- Multilingual support with dedicated language toggle button
3841
- Emoji search with keyword support
3942

@@ -52,8 +55,9 @@ Privacy-focused Android keyboard with swipe typing, custom layouts, and password
5255
**Privacy**
5356
- No telemetry, analytics, or network permissions
5457
- Local on-device processing
55-
- Encrypted local storage for user data
58+
- Encrypted local storage for user data (AES-256 + Android Keystore)
5659
- Dictionary export and import for backup or migration
60+
- Bigram predictions and word frequencies remain local-only (not exported)
5761

5862
## Privacy
5963

fastlane/metadata/android/en-US/full_description.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
Privacy-focused Android keyboard with swipe typing, custom layouts, and password manager support. No tracking, 100% on-device, and fully open source.
22

33
**Input**
4-
- Swipe typing with geometric path matching
5-
- One-handed and split modes
4+
- Swipe typing with geometric path matching and vertex detection
5+
- One-handed and split modes with coordinate transformation
66
- Long-press for character variations and custom key mapping
7+
- Long-press comma key to switch keyboards (IME picker)
78
- Spacebar swipe for cursor control
89
- QWERTZ, AZERTY, Dvorak, Colemak, and Workman layouts
910
- Hardware keyboard detection
1011

1112
**Intelligence**
13+
- Local bigram model for next-word prediction
1214
- On-device spell checking using SymSpell algorithm
1315
- Smart autocorrect for URLs, emails, and punctuation context
1416
- Word learning with encrypted SQLCipher database
17+
- User-specific word frequency tracking
1518
- Multilingual support with dedicated language toggle button
1619
- Emoji search with keyword support
1720

@@ -30,5 +33,6 @@ Privacy-focused Android keyboard with swipe typing, custom layouts, and password
3033
**Privacy**
3134
- No telemetry, analytics, or network permissions
3235
- Local on-device processing
33-
- Encrypted local storage for user data
36+
- Encrypted local storage for user data (AES-256 + Android Keystore)
3437
- Dictionary export and import for backup or migration
38+
- Bigram predictions and word frequencies remain local-only (not exported)

0 commit comments

Comments
 (0)