Skip to content

feat(sketchpad): keyboard-free glyph picker + offline Gemma feedback#45

Open
KpG782 wants to merge 4 commits into
devfrom
feat/audit-suite-and-p0-fixes
Open

feat(sketchpad): keyboard-free glyph picker + offline Gemma feedback#45
KpG782 wants to merge 4 commits into
devfrom
feat/audit-suite-and-p0-fixes

Conversation

@KpG782
Copy link
Copy Markdown
Contributor

@KpG782 KpG782 commented May 17, 2026

Summary

  • Replaces the sketchpad free-text target field with a keyboard-free glyph picker (bottom-sheet grid), eliminating the IME show/hide re-mount loop that made the field unusable.
  • Robust bottom-sheet container (self-bounded width/height, no showDragHandle/isScrollControlled) — fixes the BoxConstraints w=Infinity crash class.
  • Offline Gemma vision fix: sketchpad now primes localModelReadinessProvider (Butty's mechanism) before analyzeImage, so on-device feedback works after restart instead of silently falling back to cloud.
  • Bundles the prior audit suite / P0 fixes already on this branch.

Verification

  • flutter analyze clean across the project.
  • Runtime widget tests not run locally: unrelated flutter_gemma native-asset relink failure blocks flutter test on this host. Device hot-restart verification recommended.

🤖 Generated with Claude Code

Iron-Mark and others added 4 commits May 12, 2026 11:51
## Summary

- Centered the model setup screen for all web layouts (desktop, landscape, portrait, short portrait) to improve vertical alignment and consistency.

- Added web-specific centered rendering path in _ModelSetupBody with minHeight + Center wrapping.

- Added optional webCentered flags on layout variants and reused existing content structure.

- Kept mobile/tablet behavior unchanged while allowing web-only center alignment.
Hand-off prompt at docs/kudlit_full_audit_prompt.md orchestrates 3
recon + 7 lane subagents in parallel, produces a markdown suite under
docs/audit/<date>/ (index, exec summary, top-10, plus 7 lane reports).

The 2026-05-14 run covered all 29 screens and emitted 11 P0 / 34 P1 /
27 P2 UX findings, plus cross-cutting parity, architecture,
performance, security, accessibility and nav reports.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Lane A (auth + router):
- 30s OTP resend cooldown + 5-attempt verify lockout w/ 60s backoff
- AuthChangeEvent.passwordRecovery handler with /reset-password route
- Admin route gated by currentUserRoleProvider.isAdmin
- Web password reset uses Uri.base.origin/auth/reset

Lane B (UX + a11y):
- TextField hint alpha raised to 160 in chat + translate inputs
- subtleForeground darkened to #4A5068 (~6.5:1 on blue900)
- Removed "Authentication is UI-only for now." caption

Lane C (performance):
- ScanTab pause/resume on tab switch in home_screen
- Halts native YOLO model (not just dispatch as 7f28abc did)

Lane D (multiplatform):
- kIsWeb in-memory stubs for 5 sqflite datasources
- profile_management uses graceful no-op (cache-first repo absorbs)

Lane E (security):
- New Supabase Edge Function supabase/functions/gemini-proxy
- cloud_gemma_datasource routes via functions.invoke
- GEMINI_API_KEY removed from client bundle

Lane F (architecture):
- baybayin_detector returns Future<Either<Failure, T>>
- New scanner/domain/{failures,usecases}/ directories
- All 3 detector impls and callers migrated to .fold

Deploy required: supabase functions deploy gemini-proxy and
supabase secrets set GEMINI_API_KEY=...

flutter analyze: clean. flutter build web: ok.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants