refactor(tile): rename internal extension surface to tile/feature vocabulary
Split backend/electron/extensions.ts into the focused
backend/electron/tile-feature-state.ts (discoverFeatures /
loadFeatureManifest / isBuiltinFeatureEnabled) and delete the original.
The dead v1-manifest plumbing — ExtensionManifest, DiscoveredExtension,
ManifestCommand/Shortcut/Action types, getExternalExtensions,
discoverAnnotatedExtensions, AnnotatedExtension.v1Manifest, and the
onV1Feature fallback callback through tile-loader / feature-startup /
main — went with it. Pre-v3 (legacy) manifests are still detected via
detectManifestVersion and now surface a clean error instead of routing
through dead code.
Renamed the user-facing function/variable surface in main.ts +
re-exports + every caller (entry.ts, ipc.ts, tile-ipc.ts,
tile-launcher.ts, index.ts, app/index.js comments) from extension
vocabulary to tile/feature:
loadExtensions -> loadFeatures
discoverBuiltinExtensions -> discoverBuiltinFeatures
getRunningExtensions -> getRunningTiles
getAllRegisteredExtensions -> getAllRegisteredTiles
isDevExtension -> isDevTile
registerDevExtension -> registerDevTile
loadDevExtension -> loadDevTile
loadDevExtensions -> loadDevTiles
cleanupDevExtensions -> cleanupDevTiles
getDevExtensionIds -> getDevTileIds
reloadExtension -> reloadTile
devExtensions map -> devTiles
devExtensionPaths -> devTilePaths
extensionsLoaded flag -> featuresLoaded
The CLI flag --load-extension keeps its name for backward compatibility.
IPC channel names (tile:extensions:*) and chrome-extensions.ts (real
Chrome MV3 extensions) are intentionally untouched — those are separate
concepts.
yarn build clean. yarn test:unit 1689 + 588 / 0 fail.