feat(settings): support preferred text size / Dynamic Type
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- ios, typescript
Research direction
Start at the existing agent-device settings command conventions and the iOS Simulator handling path; trace active-session, --device, and --udid selection plus the structured API/MCP response path. Add read and set behavior for the listed categories, validation, unsupported-target handling, help, documentation, and tests covering parsing, selection, success, invalid input, and unsupported targets.
Written by the indexing model from the issue text.
Description
Problem
agent-device settings does not expose the preferred text-size / Dynamic Type category. This makes accessibility and layout QA less reproducible: an agent can observe unexpectedly large text, but it cannot inspect or restore the simulator's content-size category through the agent-device command surface.
Observed with agent-device 0.21.0 on an iOS simulator. The current workaround is to leave agent-device and call CoreSimulator directly:
xcrun simctl ui <udid> content_size
xcrun simctl ui <udid> content_size large
Driving the Settings app is possible, but it is slower and depends on localized labels and slider coordinates.
Proposed command
Add an iOS-simulator settings helper, for example:
agent-device settings text-size
agent-device settings text-size large
agent-device settings text-size accessibility-extra-large
The no-argument form should return the normalized current category. The setter should accept the categories supported by simctl ui ... content_size:
extra-smallsmallmediumlargeextra-largeextra-extra-largeextra-extra-extra-largeaccessibility-mediumaccessibility-largeaccessibility-extra-largeaccessibility-extra-extra-largeaccessibility-extra-extra-extra-large
Exact naming can follow the existing settings-command conventions.
Scope
- Implement the first slice for iOS Simulator by delegating to
simctl ui <device> content_size. - Respect the active session or explicit device selection (
--device/--udid). - Return
UNSUPPORTED_OPERATIONwith a useful message on targets where agent-device cannot set the category. - Android font-scale parity can be handled separately because its values and behavior do not map exactly to Apple's categories.
Acceptance criteria
- The current preferred content-size category can be read through CLI and structured API/MCP responses.
- A supported category can be set on the selected iOS simulator.
- The result reports the applied normalized category rather than only command success.
- Invalid category values fail before mutating simulator state and list the accepted values.
- Help text and command documentation include the new setting.
- Tests cover parsing, device selection, success, invalid input, and unsupported-target behavior.
- Dominant language
- TypeScript
- Stars
- 4.8k
- Forks
- 315
- Avg merge
- 11h 37m
- Merged PRs (30d)
- 556
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from callstack/agent-device
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
callstack/agent-device#1869 ·
Maintainers usually reply within 1 day
-
iOS: type/fill still reads its pre-focus element after the focus tap, ending the runner sessionOpenbug needs-triage
Difficulty 4/5 3-5 days Newbie friendliness 45/100
callstack/agent-device#3238 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
callstack/agent-device#3229 ·
Maintainers usually reply within 1 day
-
fix(apple-runner): fence prep spawns after teardown or last-waiter cancellationPossibly taken @thymikee claimed this today. Openneeds-triage
Difficulty 4/5 3-5 days Newbie friendliness 42/100
callstack/agent-device#3220 ·
Maintainers usually reply within 1 day
-
Explicit macOS surface is lost from recorded actions and replay scriptsPossibly taken @janicduplessis claimed this 1 day ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 25/100
callstack/agent-device#3216 ·
Maintainers usually reply within 1 day
All issues in callstack/agent-device
Similar issues
-
enhancement good first issue priority: low size: XS
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
streamplace/streamplace#1351 ·
Maintainers usually reply within 2 days
-
Link Checker ReportOpenautomated issue report
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
databendlabs/databend-docs#3511 ·
-
automated issue report
Difficulty 2/5 1-3 hours Newbie friendliness 65/100