Skip to content

Add optional Pip companion and kid-friendly answers#123

Draft
g4nesh wants to merge 1 commit into
farzaa:mainfrom
g4nesh:agent/pip-learning-companion
Draft

Add optional Pip companion and kid-friendly answers#123
g4nesh wants to merge 1 commit into
farzaa:mainfrom
g4nesh:agent/pip-learning-companion

Conversation

@g4nesh

@g4nesh g4nesh commented Jul 17, 2026

Copy link
Copy Markdown

Summary

This PR adds Pip as an optional animated companion beside Clicky's existing blue pointer, plus an independent Kid-friendly answers mode.

Clicky remains the only navigator: it still captures context, selects interface targets, speaks responses, and owns the pointer flight and return lifecycle. Pip only mirrors those existing visual and voice states; it does not move the real macOS pointer or introduce a second navigation system.

What changed

  • Added a bundled 8 × 11 Pip sprite atlas and SwiftUI renderer with deterministic timing, directional movement, reduced-motion support, accessibility labels, and 16 target-looking directions.
  • Rendered Pip directly in BlueCursorView, positioned from Clicky's existing pointer and mapped to listening, thinking, moving, pointing, and speaking states.
  • Added persisted, opt-in Show Pip and Kid-friendly answers settings. Both default to off and can be enabled independently.
  • Extended Clicky's existing prompt with shorter, concrete explanations and trusted-grown-up guidance for personal information, purchases, sharing, privacy, account changes, and destructive actions.
  • Kept the existing [POINT:…] contract unchanged so kid-friendly replies can still guide learners through software.
  • Cleared active response, target, TTS, and conversation context when changing reply modes; replacement dictation also cancels old playback cleanly.
  • Skipped email collection and hid outbound feedback during kid-friendly first-run/use. Content-bearing transcript, response, and pointed-element analytics calls are also skipped in that mode; standard-mode analytics are unchanged.
  • Added a deterministic local sandbox that demonstrates pointer flight, Pip animations, both reply styles, and return behavior without microphone access, screen capture, credentials, or network requests.
  • Added focused Swift Testing coverage and updated user/contributor documentation.

Preview

Clicky with the optional Pip companion

Pip mirrors Clicky's existing pointer and response state while Clicky remains in control of navigation.

Kid-friendly navigation explanation

Kid-friendly mode changes the explanation style without changing how Clicky selects or points to interface targets.

Validation

  • Parsed every Swift source and test file with swiftc -frontend -parse.
  • Typechecked and executed a focused Swift harness for Pip atlas constants, timing, direction resolution, and Clicky-state presentation mapping.
  • Passed git diff --check and linted both app property lists.
  • Validated the Pip asset as a 1536 × 2288 RGBA atlas with 8 columns, 11 rows, no transparent-RGB residue, and no validator warnings or errors.
  • Parsed the sandbox script and confirmed it contains no network, microphone, or screen-capture integration.
  • Exercised the sandbox in-browser through question selection, kid-friendly copy, target arrival, Pip visibility toggling, and pointer return to ready state.
  • Confirmed the sandbox page, atlas, and two 1280 × 720 preview images return HTTP 200 locally.
  • Added Swift Testing cases for atlas layout, animation timing and reduced motion, direction resolution, presentation-state mapping, and preservation of the pointing contract in kid-friendly mode. The Xcode test target itself was not run in this environment.

Safety and scope

  • Kid-friendly mode is prompt and setup behavior, not a parental-control or content-classification system.
  • The native app continues to use Clicky's existing screen, transcription, model, analytics, and TTS pipeline.
  • The deterministic browser fixture is the isolated sandbox; this PR does not enable the macOS App Sandbox entitlement.
  • Pip is presentation-only and owns no screen capture, model request, speech, target, overlay window, or navigation lifecycle.

Limitations

  • A signed native Xcode run was not performed here. Real microphone input, macOS permissions, Worker/provider calls, and navigation inside Notion still require an Xcode run with the normal Clicky setup.
  • The included container definition was not executed because Docker is unavailable locally.

Reviewer notes

  • The runtime Pip atlas adds approximately 3.2 MB to the app bundle.
  • The atlas was generated specifically for this contribution using OpenAI image generation, then assembled and validated deterministically. No brand source assets were supplied, and the contributor is offering the assembled asset under this repository's MIT license.
  • The local pet-art/ generation and QA workspace is intentionally excluded from this PR; only the validated runtime atlas is included.

Render the validated Pip sprite atlas from Clicky's existing pointer, navigation, and voice state without introducing a second navigator.

Add independent kid-friendly prompt and onboarding controls with response/TTS cancellation, conversation reset, trusted-grown-up guidance, and suppression of content-bearing analytics calls in that mode.

Include focused Swift tests, updated documentation, and a deterministic network-free sandbox with verified PR screenshots.
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