Skip to content

feat: add run-sample tooling and SDK health dashboard QA#124

Open
ethanpschoen wants to merge 8 commits into
ethanpschoen/feat/native-storagefrom
ethanpschoen/feat/run-sample-skills
Open

feat: add run-sample tooling and SDK health dashboard QA#124
ethanpschoen wants to merge 8 commits into
ethanpschoen/feat/native-storagefrom
ethanpschoen/feat/run-sample-skills

Conversation

@ethanpschoen

@ethanpschoen ethanpschoen commented Jun 19, 2026

Copy link
Copy Markdown

Description of this change

Adds local dev/testing tooling: Cursor ketch-android-run-sample skill + scripts, sample-app SDK Health Dashboard (compose + standard), DevUrlOverrides for local tag URL redirection, ConfigDebug summaries, WebResourceOverrideHandler, README workflow docs, and foojay resolver plugin.

Why is this change being made?

  • Chore (non-functional changes)
  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

How was this tested? How can the reviewer verify your testing?

  • Manual QA via run-sample scripts (see .cursor/skills/ketch-android-run-sample/SKILL.md).
  • Reviewer: bash .cursor/skills/ketch-android-run-sample/scripts/run-sample-app.sh compose local and exercise SDK Health Dashboard (Load, Show Consent, Fetch Bootstrap).

Related issues

#122 #123

Checklist

  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • I have evaluated the security impact of this change, and OWASP Secure Coding Practices have been observed.
  • I have informed stakeholders of my changes.

Note

High Risk
Large SDK surface area: new consent/headless HTTP paths and WebView dismiss/show-consent behavior affect production integrations; sample DevUrlOverrides enables cleartext localhost when turned on.

Overview
Adds a native headless HTTP layer (HeadlessApiClient, KetchDataCenter, models) and wires it through Ketch / KetchSdk for location, bootstrap/full config, consent get/set, profile, rights, subscriptions, QR, and telemetry—plus OkHttp/coroutines, unit tests (MockWebServer), and live KetchHeadlessIntegrationTest against the CDN.

WebView path gets dataCenter-derived base URLs, optional webResourceUrlOverrides (native intercept + JS in index HTML), a rebuilt index bootstrap (event bindings, auto-show consent), config debug summaries (onConfigDebugInfo), and experience fixes (reuse WebView for showConsent, centralized dismiss with real HideExperienceStatus, tap-outside delegation + timeout, banner backdrop fix).

Compose and standard samples gain an on-screen SDK Health Dashboard (connection, load/visibility, privacy frameworks, headless buttons, event log), shared org/property defaults, DevUrlOverrides, and cleartext localhost for local tag scripts. Cursor adds ketch-android-run-sample (dependency toggle script, emulator-aware run-sample-app.sh) and development-workflow.mdc; .cursor/ is no longer gitignored.

README documents headless cold-start usage; integration-tests README splits headless vs WebView run instructions.

Reviewed by Cursor Bugbot for commit b9ad60f. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit b9ad60f. Configure here.

Comment thread ketchsdk/src/main/java/com/ketch/android/api/HeadlessApiClient.kt
Comment thread ketchsdk/src/main/java/com/ketch/android/ui/WebResourceOverrideHandler.kt Outdated
@ethanpschoen ethanpschoen changed the title feat(samples): add run-sample tooling and SDK health dashboard QA feat: add run-sample tooling and SDK health dashboard QA Jun 22, 2026
@ethanpschoen ethanpschoen force-pushed the ethanpschoen/feat/run-sample-skills branch from b9ad60f to 2991afc Compare June 22, 2026 21:35
@ethanpschoen ethanpschoen force-pushed the ethanpschoen/feat/native-storage branch from 3558d5d to 994189a Compare July 6, 2026 19:55
Expose headless bootstrap/config/profile/consent endpoints via HeadlessApiClient,
wire Ketch/KetchSdk surface APIs, refresh index HTML init, and add unit plus
integration test coverage.
Remove tap-outside dismiss plumbing and index HTML touch handlers from
this branch; those belong in run-sample-skills. Branch is off main only
(no native storage commits).
Drop Index.kt, KetchWebView.kt, Events.kt, and WebView flow changes from
the headless branch. Keep HeadlessApiClient, models, KetchSdk/Ketch REST
methods, data center wiring, and integration tests.
Add Cursor run-sample skill/scripts, dev URL overrides for local tag testing,
ConfigDebug summaries, sample-app health dashboards, and README workflow docs.
- Implement missing WebViewListener.onTapOutside() override on Ketch's
  anonymous listener (abstract method added by beta's cross-activity work,
  unimplemented after merging headless-sdk/native-storage on top).
- Restore Ketch import dropped in both sample apps' MainActivity.kt during
  conflict resolution.
@ethanpschoen ethanpschoen force-pushed the ethanpschoen/feat/run-sample-skills branch from 4b84c33 to 0acf2a6 Compare July 6, 2026 21:11
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