You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(playground): add device options configuration for Android/iOS (#1485)
* feat(playground): add device options configuration for Android/iOS
This commit implements device-specific configuration options in the
playground UI, allowing users to customize device behavior such as
keyboard handling and IME strategy.
Changes:
- Add device options state management with localStorage persistence
- Create UI controls for Android-specific options (imeStrategy,
autoDismissKeyboard, keyboardDismissStrategy, alwaysRefreshScreenInfo)
- Create UI controls for iOS-specific options (autoDismissKeyboard)
- Extend execution pipeline to pass deviceOptions from frontend to backend
- Update agent.interface.options on the server side when deviceOptions
are received
- Optimize parameter flattening to avoid delete operator performance issues
Technical implementation:
- Frontend: Store device options in Zustand with localStorage sync
- SDK: Include deviceOptions in remote execution adapter payload
- Server: Update agent.interface.options to apply settings globally
- This ensures all actions (including those called by aiAct) use the
updated options
Fixes#1282
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
* feat(playground): add dynamic device type detection for iOS/web playground
The universal playground app now detects the device type from the
connected server's /interface-info API and displays device-specific
configuration options accordingly.
This ensures that iOS playground users can see and configure iOS
device options (autoDismissKeyboard), while web users see no
device-specific options.
Related to #1282
* fix(ios): improve keyboard dismissal to prevent accidental UI interactions
The previous implementation used a swipe down gesture at a fixed screen
position (1/3 from top) which could accidentally click on search results
or other UI elements that appeared after text input.
Changes:
- Use WDA's dismissKeyboard API as the primary method (more reliable)
- Fall back to safer swipe gesture (from bottom up) if API fails
- Increase wait time from 300ms to 500ms for UI stability
- Update autoDismissKeyboard documentation to reflect default behavior
Technical details:
- WDA API tries common keyboard button names: return, done, go, search, etc.
- Swipe fallback uses safer coordinates: from 90% height to 50% height
- This prevents accidental taps on UI elements in the upper portion of screen
Related to #1282
* feat(screenshot-viewer): add screenshot viewer component with styles and functionality
* fix(tests): enhance keyboard dismissal tests to simulate failure scenarios
---------
Co-authored-by: Claude <[email protected]>
0 commit comments