feat(v1-removal): Phase 3.7f adblocker + 3.7g window-devtools / get-focused / pubsub-stats
Combined commit covering Phase 3.7f's last namespace migration plus
three smaller Phase 3.7g migrations. Build green, unit tests 588/588.
Phase 3.7f — adblocker:
- Move adblocker:getStatus / enable / disable / getBlockedCount /
getAllowlist / isSiteAllowed / allowSite / disallowSite from legacy
ipc.ts handlers to strict tile:adblocker:* handlers in tile-ipc.ts.
- ipc.ts: drop legacy adblocker:* handlers; export persistAdBlockerPref
so tile-ipc can call it. registerWebExtensionHandlers is now a no-op.
- tile-ipc.ts: 8 tile:adblocker:* handlers behind trustedBuiltin grant;
consolidate feature_settings allowlist read/write in two helper closures.
- tile-preload.cts: api.adblocker.* now invoke strict channels with token.
Phase 3.7g — window-devtools:
- ipc.ts: drop legacy window-devtools handler; export
getLastContentWindowId/clearLastContentWindowId so tile-ipc can use
the existing content-window tracker.
- tile-ipc.ts: add tile:window:devtools (trustedBuiltin only — devtools
is a developer surface).
- tile-preload.cts: add api.window.devtools id?.
- app/cmd/commands/page.js: switch from api.invoke('window-devtools')
to api.window.devtools.
Phase 3.7g — get-focused-visible-window-id:
- tile-ipc.ts: replace stale BrowserWindow.getFocusedWindow fallback in
tile:window:get-focused-visible-id with the proper getter
getLastFocusedVisibleWindowId now that the import exists.
- ipc.ts: drop legacy get-focused-visible-window-id handler.
- tile-preload.cts: collapse api.window.getFocusedVisibleWindowId
fallback to strict-only; unwrap success/data shape so callers still
get a bare number|null. Update the inline call inside the
trustedBuiltin theme.setWindowColorScheme override too.
- focused-window-tracking.test.ts: refresh stale doc comment.
- Audit: all 5 caller features spaces/groups/tags/windows/entities
declare window.query so the strict path is unblocked.
Phase 3.7g — pubsub-stats:
- ipc.ts: drop legacy pubsub-stats handler and the now-unused
getPubSubStats import.
- tile-ipc.ts: add tile:pubsub:stats trustedBuiltin only (third-party
tiles shouldn't introspect global pubsub state).
- tile-preload.cts: api.pubsub.stats now invokes the strict channel.
Phase 3.7f COMPLETE. After 3.7g, ipc.ts has no remaining handlers in
window-devtools / get-focused-visible-window-id / pubsub-stats.