fix(settings): render per-feature Options accordion + per-item arrows
Surfaced 2026-04-26: features that declare `settingsSchema` in their
manifest (peeks, slides, etc.) had no expandable Options bit on their
Settings → Features card. Two layered bugs:
1. `app/settings/settings.js::refreshFeaturesList` constructed each
feature's `manifest` object without a `schemas` field. The registry
(`api.features.list`) returns a flat entry shape that doesn't include
the manifest's `settingsSchema` path. The accordion gate
`manifest.schemas && (manifest.schemas.prefs || manifest.schemas.item)`
was therefore always false. Fix: fetch each feature's settings-schema
JSON in parallel via the existing `api.features.settingsSchema(id)`
IPC and populate `manifest.{schemas,storageKeys,defaults}` from it.
2. Once the accordion rendered, per-item cards inside it (e.g. Peek key
0..9) had no expand/collapse arrow — `getComputedStyle` showed
`::before { content: 'none' }`. The rule
`.item-card.no-collapse .item-card-title::before { content: none }`
was a descendant selector, so it cascaded into nested per-item titles
inside the no-collapse outer feature card. Fix: scope to the outer
card's own header via `.item-card.no-collapse > .item-card-header
.item-card-title::before` — per-item cards live in `.item-card-body`,
so they're no longer matched.
Coverage: new `tests/desktop/feature-options.spec.ts` opens Settings,
expands the Peeks Options accordion, asserts a form-section renders and
the inner peek card title's `::before` content is `▶` or `▼`.