Skip to content

Commit 73f3590

Browse files
committed
chore: rebucket settings home
1 parent abeb548 commit 73f3590

8 files changed

Lines changed: 105 additions & 64 deletions

File tree

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,41 @@
22

33
All SwiftFloris release history is consolidated here. This replaces the former root-level `RELEASE_NOTES_v*.md` file-per-release pattern.
44

5+
<a id="v1.8.211"></a>
6+
## v1.8.211
7+
8+
Released: 2026-06-04
9+
10+
### Settings home five-bucket regroup
11+
12+
EI2 closes the remaining low-value Settings home IA polish. The original research premise was stale because the home screen was already grouped, so this release keeps the behavior surface intact and reshuffles the existing destinations into the archived five-bucket model: Typing experience, Personalization, Privacy & data, Advanced, and About.
13+
14+
The existing Physical keyboard screen is now surfaced directly under Advanced while retaining its `settings/other/physical-keyboard` deep link and its existing entry inside Other. No settings route was removed, and no new permission, network, account, or telemetry surface was added.
15+
16+
### Changes
17+
18+
- **`HomeScreen.kt`** - regrouped home preferences into the five archived EI2 buckets and added a direct Physical keyboard row under Advanced.
19+
- **`strings.xml`** - replaced the old four home-section labels with resource-backed five-bucket section labels.
20+
- **`ROADMAP.md` / `COMPLETED.md`** - moved the reframed EI2 polish item out of active work and into shipped state.
21+
22+
### Verification
23+
24+
- `./gradlew.bat :app:compileDebugKotlin` -> green with `JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-21.0.11.10-hotspot`.
25+
- `./gradlew.bat :app:verifyNoInternetPermission :app:testDebugUnitTest :app:lintDebug :app:assembleDebug` -> green with `JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-21.0.11.10-hotspot`.
26+
- `./gradlew.bat :app:verifyRoborazziDebug` -> green with `JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-21.0.11.10-hotspot`.
27+
- `git diff --check` -> green; CRLF normalization warnings only.
28+
- `bash scripts/check-fastlane-metadata.sh` -> green for versionCode 2011.
29+
- `bash scripts/check-repo-hygiene.sh` -> green.
30+
31+
### Files Touched
32+
33+
- `app/src/main/kotlin/dev/patrickgold/florisboard/app/settings/HomeScreen.kt`
34+
- `app/src/main/res/values/strings.xml`
35+
- `fastlane/metadata/android/en-US/changelogs/2011.txt` (new)
36+
- `gradle.properties` (versionCode 2010->2011, versionName 1.8.210->1.8.211)
37+
- `README.md` (version badge/current release/highlights)
38+
- `ROADMAP.md` / `COMPLETED.md` (EI2 moved to shipped work)
39+
540
<a id="v1.8.210"></a>
641
## v1.8.210
742

COMPLETED.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,15 @@ Consolidated from the archived open-work checklist (closed items). Full per-rele
4949
- [x] F3 (P0, reframed) — First-run "Import your dictionary" setup hint for post-cutoff local keyboard exports, routing SwiftKey JSON, Gboard XML/ZIP, FlorisBoard CSV/.flbackup/.fldic, and SwiftFloris exports into the existing personal-dictionary importer. Shipped v1.8.208. — *Source: TODO_2026-06-03.md*
5050
- [x] EI3 (P2) — Personal dictionary bulk-import preview for modular imports, with first-50-row review, row exclusion before commit, excluded-row summary counts, and persisted skip-preview opt-out. Shipped v1.8.209. — *Source: TODO_2026-06-03.md*
5151
- [x] F6 (P2) — Per-app accent opt-in discovery hint and Settings preview, with process-local three-app threshold tracking, persisted hint state only, Settings search coverage, and privacy docs. Shipped v1.8.210. — *Source: TODO_2026-06-03.md*
52+
- [x] EI2 (P3, reframed) — Settings home regrouped into Typing experience, Personalization, Privacy & data, Advanced, and About buckets, with Physical keyboard surfaced directly under Advanced while preserving existing deep links. Shipped v1.8.211. — *Source: TODO_2026-06-03.md*
5253
- [x] F1, F2, F15, F16, F17, F19, F20, F25, F26, F32, F34, F35, F36, F41, F42, EI8, EI11, EI4 (doc) — Closed across v1.8.174 -> v1.8.187. — *Source: TODO_2026-06-03.md*
5354
- [x] IMPROVEMENT_PLAN Workstreams 1, 3, 4, 5, 6 complete; Workstream 2 (lint) monotonically decreasing. — *Source: IMPROVEMENT_PLAN_2026-05-18.md*
5455

5556
## Stale / Obsolete Items
5657

5758
- [STALE] F33 — *Reason: Rejected; no longer in the active queue. Source: TODO_2026-06-03.md*
5859
- [STALE] O5 — Settings -> Sync screen "missing" finding — *Reason: Incorrect; `SyncSettingsScreen.kt` (443 LOC) already exists, is registered in `Routes.kt` (`@Deeplink settings/sync`), and is reachable from `HomeScreen` (verified 2026-05-28). Source: TODO_2026-06-03.md*
59-
- [STALE] EI2 (original premise) — "15 sub-screens at one level" — *Reason: Stale; Settings home is already grouped into four labelled sections in `HomeScreen.kt`. Only a low-value cosmetic re-bucket survives as P3 in ROADMAP. Source: TODO_2026-06-03.md*
60+
- [STALE] EI2 (original premise) — "15 sub-screens at one level" — *Reason: Stale; Settings home was already grouped before the research refresh. The surviving low-value cosmetic re-bucket shipped in v1.8.211. Source: TODO_2026-06-03.md*
6061
- [STALE] F31 (original spec) — per-app language via `LocaleManager.getApplicationLocales(packageName)`*Reason: Requires the privileged `READ_APP_SPECIFIC_LOCALES` permission, not grantable to a normal IME and contrary to the clean-permission posture; reframed to a permission-free remembered-subtype feature in ROADMAP. Source: TODO_2026-06-03.md*
6162
- [STALE] F3 / EI7 (migration-window framing) — *Reason: The 2026-05-31 SwiftKey cloud-export cutoff has passed; the import/voice-install discovery value is permanent, so both items were reframed as generic surfaces in ROADMAP (migration-window framing dropped). Source: TODO_2026-06-03.md*
6263

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SwiftFloris
22

3-
![Version](https://img.shields.io/badge/version-v1.8.210-blue) ![License](https://img.shields.io/badge/license-Apache%202.0-green) ![Platform](https://img.shields.io/badge/platform-Android%208.0+-orange) ![Network](https://img.shields.io/badge/network-none-lightgrey) ![Dictionary imports](https://img.shields.io/badge/dictionary%20imports-local%20files-green)
3+
![Version](https://img.shields.io/badge/version-v1.8.211-blue) ![License](https://img.shields.io/badge/license-Apache%202.0-green) ![Platform](https://img.shields.io/badge/platform-Android%208.0+-orange) ![Network](https://img.shields.io/badge/network-none-lightgrey) ![Dictionary imports](https://img.shields.io/badge/dictionary%20imports-local%20files-green)
44

55
**SwiftFloris** is a privacy-first Android keyboard, forked from FlorisBoard and pushed toward SwiftKey-class multilingual typing without the cloud. It ships under Apache-2.0, holds no `INTERNET` permission, and binds zero accounts.
66

@@ -37,7 +37,7 @@
3737
3838
## Highlights
3939

40-
| Area | What's in v1.8.210 | Privacy posture |
40+
| Area | What's in v1.8.211 | Privacy posture |
4141
|------|-------------------|-----------------|
4242
| **Autocorrect / prediction** | SCOWL 117k English dictionary, SymSpell d1+d2, bigram + trigram next-word, capitalization-aware completions, contraction handling, instant-remember user-dictionary overlay | On-device |
4343
| **Multilingual typing** | Bilingual subtype presets (EN+ES / EN+FR / EN+DE), per-token Latin language identification, top-two straddle guard, sentence-local context scoring, and opt-in remembered keyboard language per app | On-device |
@@ -50,7 +50,7 @@
5050
| **Themes** | 21 bundled themes — SwiftKey Pure (Light/Dark + M3 Expressive), SwiftKey High Contrast (AAA), Aurora Animated, Floris Day/Night, Swift Glacier, Swift Slate, M3E Nord (light + dark), Tokyo Night, Dracula, Catppuccin Mocha; borderless variants where applicable; Snygg theme engine; per-app accent with Settings preview and one-time opt-in hint | No telemetry |
5151
| **MCP daemon bridge** | AIDL bridge to user-installed MCP daemons with per-daemon enable / disable in Settings → MCP daemon bridge | Local-only binder, no network |
5252
| **Addon packs** | Addon manifest/enumerator contracts, IME-startup registry reconciliation, Settings -> Addons status/rescan, trust reset/changed-certificate controls, dictionary-pack catalog details, persisted signing-certificate pins, descriptor validation, provenance reports, typed dictionary-pack catalog, and addon APK dictionary asset mounting | No-network addon rejection |
53-
| **Settings UX** | Clearer empty states for voice setup, selected user-dictionary languages, extension categories, language packs, filtered clipboard history, and theme-manager recovery; surfaced keyboard preview field with ready/active state feedback | Local UI only |
53+
| **Settings UX** | Five-bucket Settings home (Typing experience, Personalization, Privacy & data, Advanced, About), global Settings search, clearer empty states for voice setup, selected user-dictionary languages, extension categories, language packs, filtered clipboard history, and theme-manager recovery; surfaced keyboard preview field with ready/active state feedback | Local UI only |
5454
| **Migration** | First-run local dictionary import hint; preview-before-save personal dictionary imports with row exclusion; Gboard / FlorisBoard / SwiftKey JSON export importer; passphrase-encrypted SwiftFloris dictionary export/import; Settings-based Keyman LDML / `.kmp` metadata + Windows KLC + macOS hardware-keyboard imports | All file-system based |
5555
| **Alternative layouts** | Colemak / Dvorak / Workman from the FlorisBoard layout pack, plus selectable honeycomb hex layout with clipped hex keys and hex-aware hit testing (only FOSS Android keyboard shipping this — Typewise vacated the consumer market early 2026; see [docs/HONEYCOMB_LAYOUT.md](docs/HONEYCOMB_LAYOUT.md)) | On-device |
5656
| **AI transparency** | First-run AI/ML explainer plus Settings → About → AI features screen covering next-word, glide, voice, translation, and smart compose | On-device, no account, no telemetry |
@@ -442,7 +442,7 @@ limitations under the License.
442442

443443
## Status
444444

445-
🚀 **Active development.** Current release: **v1.8.210** (2026-06-04). The SwiftKey account export window closed on **2026-05-31**; local/on-device migration paths remain documented above.
445+
🚀 **Active development.** Current release: **v1.8.211** (2026-06-04). The SwiftKey account export window closed on **2026-05-31**; local/on-device migration paths remain documented above.
446446

447447
---
448448

ROADMAP.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,14 @@
22

33
> Single source of truth for all planned work. Items above the --- are existing plans; items below are research conducted 2026-06-03.
44
5-
**Current release:** v1.8.210 (versionCode 2010). **Baseline green:** `:app:verifyNoInternetPermission :app:testDebugUnitTest :app:lintDebug :app:assembleDebug`.
5+
**Current release:** v1.8.211 (versionCode 2011). **Baseline green:** `:app:verifyNoInternetPermission :app:testDebugUnitTest :app:lintDebug :app:assembleDebug`.
66

77
Hard rules still apply (see `AGENTS.md`): no `INTERNET` permission in `:app`; Apache-2.0 ceiling on `:app`; no closed-source blobs; one logical change per commit; every shipped release bumps `gradle.properties` version, writes a `CHANGELOG.md` section, and adds a `fastlane/metadata/android/en-US/changelogs/<versionCode>.txt` (draft <=480 chars for headroom).
88

99
Item IDs trace to their origin research: `F#`/`EI#` from the archived 2026-05-25 research feature plan; `R#`/`O#` from the 2026-05-25 second-pass findings; `WS#` from the archived improvement-plan workstreams; `N#`/`Next-#`/`L#` from the archived roadmap tiers. Shipped items and reframed/rejected items live in `COMPLETED.md`; full release detail in `CHANGELOG.md`. Historical strategy (tiered NOW/NEXT/LATER, sourced appendix) is preserved at `docs/archive/ROADMAP_v5.67_2026-05-18.md`.
1010

1111
## Existing Planned Work
1212

13-
### Settings & UX surfaces
14-
15-
- [ ] P3 — Settings home cosmetic re-bucket (EI2)
16-
- Why: Settings home is already grouped into four labelled sections (Essentials / Experience / Data / System); the research's "15 sub-screens at one level" premise is stale. Only residual value is a cosmetic re-bucket into the 5 research groups.
17-
- Touches: `HomeScreen.kt` grouping.
18-
- Acceptance: do only as low-value polish; no behavior change.
19-
- Source: TODO.md A3 / second-pass EI2.
20-
2113
### Keyboard surface & visual polish (device-gated)
2214

2315
- [ ] P1 — Keyboard surface polish + manual-override verification (WS11)

0 commit comments

Comments
 (0)