Repository navigation
Conversation
There was a problem hiding this comment.
All reported issues were addressed across 49 files
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
|
|
The settings catalog and per-setting admission look sound in code at e0a7c21, but this PR changes device-facing routes and has no device run yet. CI is pending: all 20 non-passing checks are still queued, none have failed, and the diff overlaps command-docs-gate, Repo Guards/layering, Bundle Size and the Android/iOS smoke routes. I know of no conflicts. Before merge, please post a live run at head. The Android alert wait/accept/dismiss and fill-verification loops now run on pollUntilSettled (alert.ts:154), and Not blocking, and fine to take or leave: commit f11c7a3 (pollUntilSettled, the Android alert and fill rewrites, and their tests) is unrelated to declaring settings, carries its own public change in I ran no tests, and I did not regenerate The cubic-dev-ai threads that still apply are the Limrun owner-list restatement (#3662 (comment)) and the settings-catalog help dropping per-owner
|
Size Report
Startup median (7 runs, lower is better):
|
Add pollUntilSettled to host-kit/retry: it samples a probe until a settled check accepts or a deadline passes, always takes the first sample, lands the last one at the deadline, and stops on an aborted signal. The Android alert wait, alert-dismiss confirmation, and fill verification use it instead of their own loops, and their tests drop the cadence assertions the helper's tests now own. An already-visible Android alert now answers alert wait 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One catalog row per setting (settings-catalog.ts) now carries its forms,
app source, app scope, and help. CLI and daemon parsing, usage, the
invalid-args message, app scope, the MCP setting enum, the public client
type, and settings --help are derived from it.
Owners declare settings support per setting through
settingsRuntimeOperationFacts({ target, unsupported, write, read }), and
admission checks the requested setting's fact before binding. That
replaces the daemon's pre-admission macOS and Apple text-size refusals
and the Apple owner leaf guards: an unserved setting answers
UNSUPPORTED_OPERATION "settings <setting> is not supported on this
device" with the owner's reason and hint, and the ref frame survives.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e0a7c21 to
38bfc3a
Compare
|
Rebased on Android 15 emulator (
iPhone 17 Pro simulator, iOS 27.0
macOS host
Response to the non-blocking points:
|
Summary
settingsnow declares every setting once and lets admission check support per setting.contracts/src/settings-catalog.tsholds each setting's forms, app source, app scope and help. CLI/daemon parsing (one parser), usage, the invalid-args message,settingsAppScope, the client type, the MCPsettingenum andsettings --helpderive from it.settingsRuntimeOperationFacts({ target, unsupported, write, read }); admission checks the requested setting before binding, so a refusal never expires the ref frame. Each owner's fact record is keyed by the setting list its dispatch switch is exhaustive over, so the two cannot drift. This removes the daemon's pre-admission refusals and the Apple leaf guards (ADR 0019 note added).pollUntilSettledinhost-kit/retryreplaces the Android alert and fill-verification loops.Public changes (CHANGELOG): an unserved setting answers
UNSUPPORTED_OPERATIONwith the owner's reason, replacing macOSINVALID_ARGSandsetting-unsupported-on-leaf; the parser refuses a permission action or mode its target does not take and stray extra arguments; Androidalert wait 0reports a visible alert.agent-device settings wifi on --platform macos # UNSUPPORTED_OPERATION, reason unsupported-platform-leaf51 files, +1480/−1779: over the 2,500-line gross guide; one migration kept as one PR on request, net −299.
Validation
pnpm check:affected --runpassed at38bfc3a60.38bfc3a60on an Android 15 emulator, an iPhone 17 Pro simulator (iOS 27.0) and the macOS host; transcript in the PR comments.🤖 Generated with Claude Code