feat(android): crash reporting, analytics opt-in, settings IA, i18n, open/share/fonts#1
Merged
Merged
Conversation
Tier-3 parity items mirroring Apple/Windows: - Open file (.txt) via SAF into the output pane. DasherCore has no CAPI to seed the edit buffer (only get/reset output), so the loaded text is kept on the frontend as a prefix and combined with the engine's append-since-reset output for display, copy, save, share (Dasher writes forward). - Share sheet (Intent.ACTION_SEND) on the full output text. - Output-pane font family (System / Sans / Serif / Monospace) + size slider (10-48 sp), persisted in a dasher_output SharedPreferences. Canvas glyph font remains the engine SP_DASHER_FONT param (Customization tab). - TopBar gains Open + Share buttons (Lucide FolderOpen / Share2). Signed-off-by: will wade <willwade@gmail.com>
Tier-2 parity items, implementing RFCs 0001/0003/0006/0009 on Android.
Crash reporting (RFC 0009):
- DasherApp (Application) installs a Thread.setDefaultUncaughtExceptionHandler
early; on a crash it writes a pending_crash.txt envelope (exception type,
thread, scrubbed stack trace + engine log tail) to filesDir, then delegates.
- flushPendingCrash on next launch sends it via PostHog (only if opted in)
and deletes it; crash files older than 7 days are discarded.
- An engine-log ring buffer (64 lines / 8 KB) is fed from DasherCore's
dasher_set_log_callback via the existing onLogListener, so each crash
report carries what the engine was doing. Home-dir paths and emails are
scrubbed (RFC 0001 no-PII).
- v1 is JVM-level; a native SIGSEGV shim for crashes inside libdasher.so is
a follow-up.
Analytics opt-in (RFC 0001): first-run AlertDialog ('Help improve Dasher' /
'Not now') shown when !hasPrompted; no events before the choice. PostHog
init moved to DasherApp.
Settings progressive disclosure (RFC 0006): Simple/Advanced Switch in
Settings filters params on the engine's binary \�dvanced\ flag (Simple is
default). A future 3-tier (common/advanced/expert) waits on a
dasher_get_parameter_tier CAPI.
Frontend i18n (RFC 0003): LocaleHelper wraps the Application base context
so Compose strings.xml follows the user-chosen locale on every API level
(no AppCompat dep). Picking a locale in Settings now also recreates the
Activity so chrome re-localises. Extracted the toolbar / settings /
analytics / output strings to strings.xml with a German (values-de)
translation as a pipeline proof; full string migration + more locales are
ongoing.
Signed-off-by: will wade <willwade@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Tier-2 and Tier-3 parity work for Dasher-Android, implementing RFCs 0001 / 0003 / 0006 / 0009. Built on top of \main; full \�ssembleDebug\ is green.
Tier 3 (parity niceties)
Tier 2 (robustness / polish)
Notes