Skip to content

feat(telemetry): ui_action + setting_changed (RFC 0001 amendment) - #79

Merged
willwade merged 1 commit into
mainfrom
feat/ui-telemetry
Oct 28, 2026
Merged

willwade merged 1 commit into
mainfrom
feat/ui-telemetry

Conversation

@willwade

Copy link
Copy Markdown
Contributor

Implements the RFC 0001 2026-10-28 amendment (governance PR pending) for Android: UI-interaction telemetry so the UX team can answer "what settings are the priority and what UX/UI is the focus on the main UI."

Two schema'd events, both opt-in gated, both with the amendment's privacy rules:

  • ui_action {surface, action, state?} — main-UI control activations: main toolbar (new/open/pause_play+state/copy/save/share/game_mode+state/settings), status bar (speed, auto-speed, emoji+state), IME editing toolbar (backspace/cursor/select/copy/paste), IME top bar (float/dock/hide/emoji+state)
  • setting_changed {setting_id, value_type, value?, surface} — every user commit: all Settings parameter rows (bool switch, slider on release, enum dropdown, string dropdown from fixed vocabularies), input-method picker, palette swatch, output font family/size, always-docked toggle; status-bar speed/auto-speed as surface=main_ui. Values only for bool/number/enum; string settings record the change without the value; no file paths.

All instrumentation is at commit sites — programmatic engine changes emit nothing. Pre-existing derived events (alphabet_selected, input_method_changed, emoji_toggled, ime_always_docked_changed, ime_float_*) remain for continuity; these two are the cross-platform aggregates.

Schema: both events added to analytics-events.json. New UiTelemetry helper centralises formatting.

Testing

  • assembleDebug + unit tests green
  • PostHog inspection after a dogfood build: both events present with correct properties

…ndment)

UX-team question: 'what settings are the priority and what UX/UI is
the focus on the main UI' — needs aggregate frequency of main-UI
control use and settings changes. Two schema'd events, both opt-in
gated, both with hard privacy rules (values only for bool/number/enum
from fixed vocabularies; free-text string settings record the change
without the value; no file paths — see the RFC amendment).

Instrumented:
- main toolbar: new/open/pause_play(+state)/copy/save/share/game_mode
  (+state)/settings — surface main_toolbar
- status bar: speed %, auto-speed, emoji toggle (+state) — surface
  status_bar, committed via setting_changed/main_ui + ui_action
- Settings: every parameter row commit (bool switch, slider on finish,
  enum dropdown, string dropdown from fixed vocabularies), input-method
  picker, colour-palette swatch, output font family/size (drag commits
  once on release), always-docked toggle — surface settings
- IME: editing toolbar (backspace/cursor/copy/paste/select) — surface
  ime_toolbar; top bar (float/dock/hide/emoji) — surface ime_topbar

Pre-existing derived events (alphabet_selected, input_method_changed,
emoji_toggled, ime_always_docked_changed, ime_float_*) remain for
continuity; setting_changed/ui_action are the cross-platform
aggregates per the amendment. All commit-site instrumentation —
programmatic engine changes emit nothing.

Signed-off-by: will wade <willwade@gmail.com>
@willwade
willwade merged commit b334039 into main Oct 28, 2026
2 checks passed
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.

1 participant