Glide Trail Visual Overhaul + Trail Themes + Performance
Trail Rendering
- Path-based strokes replace the old dotted-circle trail — smooth, continuous line with StrokeCap.Round
- Alpha gradient — tail fades from 15% to 90% at the fingertip via sqrt(progress) curve
- Tapered width — thinner tail, thicker at the finger
- Head dot — 3-layer glow/core/highlight at the fingertip
- Key highlight — subtle rounded-rect overlay on the key under the finger during glide
- Trail duration 200ms to 500ms so gradients actually spread
7 Trail Themes (Settings > Gestures > Trail theme)
- Accent — Theme primary color (with transparent fallback guard)
- Rainbow — Animated full-spectrum hue cycling
- Fire — Dark crimson > red > orange > yellow > white-hot with heat shimmer
- Ice — Dark indigo > electric blue > cyan > white frost
- Aurora — Northern lights: cycling greens/teals/purples
- Galaxy — Deep purple > electric blue > hot pink > lavender with hue shift
- Neon — Pulsing bright green
Bug Fixes
- Invisible trail fixed — the draw block was gated behind a language check that returned false for unlisted locales even though gesture detection worked fine. Removed the redundant gate.
- Accent color guard — if the theme resolves --primary to transparent, falls back to green.
Performance
- Cancel stale preview coroutines — prevents pile-up during long gestures
- Cache ideal gestures — resampled+normalized ideal gesture paths cached in bounded LruCache(512) instead of regenerated per classification call
- 8 draw calls/frame — down from 40 (removed separate glow layer, cut segments from 20 to 8)
- Reduced classifier work for previews — only computes needed count instead of always 8
Install
Download app-release.apk below. Signed with the SwiftFloris release key (v1+v2+v3 schemes).