feat(tile-ipc): tile:features:settings-schema + tile:window:get-id shims (Phase 3.5e)
Add two strict IPC shims as part of the V1-removal Phase 3.5e:
tile:features:settings-schema
- Main-process handler in tile-ipc.ts gated by checkFeaturesAllowed(grant, 'read')
- Looks up the feature registry entry, reads settingsSchema from the manifest
(v2 field or raw fallback for v1), reads and parses the JSON schema file
- Returns { success, data } — data is null when no schema is declared or file absent
- Mirrors legacy `feature-settings-schema` channel semantics
tile:window:get-id
- Main-process handler in tile-ipc.ts — token validity enforced, no capability gate
(every tile has an inherent right to know its own window id)
- Returns { success, id } from BrowserWindow.fromWebContents(event.sender)
- Mirrors legacy un-gated `get-window-id` channel
tile-preload.cts additions (additive only):
- featuresStrict.settingsSchema + api.features.settingsSchema (strict path routes
through tile:features:settings-schema; v1-compat falls back to feature-settings-schema)
- windowStrict.getId (api.window.getId) — strict path routes through tile:window:get-id;
v1-compat falls back to get-window-id
No legacy handler deletions.