You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Remove dead UI code from the macOS native app that references gutted backend systems. After the middleware replacement (CLI agent runtimes via ChannelBridge), two features visible in the macOS app no longer have functioning backends:
Skills system — the gateway no longer implements skills.* RPC methods (gutted in PR feat: gut skills system and ClawHub (#63) #64). The macOS Settings tab and onboarding skills overview call dead endpoints.
LLM model catalog — the local ModelCatalogLoader reads models.generated.js from the old in-process LLM system (gutted in PR feat: remove in-process LLM packages and dead model management #108). The models.list gateway method exists in the method list but has no handler implementation.
The wizard/onboarding flow is ALIVE — wizard.* gateway methods are fully functional (redesigned in PR #90). Do NOT touch wizard UI code.
iOS and Android do NOT have skills settings or model catalog UI — this is macOS-only dead code.
Dead Code Inventory
Skills UI (macOS only)
File
Action
What
apps/macos/Sources/OpenClaw/SkillsSettings.swift
DELETE
Skills settings tab (621 lines) — calls GatewayConnection.shared.skillsStatus() and skillsInstall() which resolve to skills.status and skills.install RPC methods that no longer exist on the gateway
apps/macos/Sources/OpenClaw/SkillsModels.swift
DELETE
Skills data models (74 lines) — SkillsStatusReport, SkillsBin, InstalledSkill types used only by SkillsSettings
LLM model catalog loader (~160 lines) — loads models.generated.js from bundle/node_modules/cache. No corresponding gateway handler exists (models.list is in the method list but has no handler implementation)
Remove model catalog section: @AppStorage(modelCatalogPathKey) binding (line 10), @AppStorage(modelCatalogReloadKey) binding (line 11), modelsLoading state (line 15), the "Reload models" UI section (~lines 430-470), and the reload function (~lines 725-735)
apps/macos/Sources/OpenClaw/Constants.swift
MODIFY
Remove modelCatalogPathKey (line 41) and modelCatalogReloadKey (line 42) constants
NOT Dead (leave alone)
Component
Status
Evidence
Wizard/Onboarding
ALIVE
wizard.start, wizard.next, wizard.cancel, wizard.status all implemented in src/gateway/server-methods/wizard.ts. Wizard was redesigned for RemoteClaw (PR #90).
DeviceModelCatalog
ALIVE
Device identification (iPhone/Mac model names), NOT LLM models. Used for device UI display.
GatewayModels.swift Skills types
GENERATED
SkillsStatusParams, SkillsBinsParams, etc. in apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift are auto-generated from the protocol schema. These dead types are harmless — they'll be removed when the protocol schema is cleaned up separately.
Verification
Pre-check (understanding what's dead)
To verify skills methods are dead:
# Gateway method list — no skills.* methods
grep 'skills' src/gateway/server-methods-list.ts
# Expected: no output# Gateway handlers — no skills handler
grep 'skills' src/gateway/server-methods.ts
# Expected: no output
To verify model catalog handler is dead:
# models.list exists in method list but has no handler
grep 'models' src/gateway/server-methods.ts
# Expected: no output (no handler imported or registered)
Post-change verification
# macOS app builds successfullycd apps/macos && swift build
# No references to deleted views remain
grep -rn 'SkillsSettings\|SkillsModels\|ModelCatalogLoader' apps/macos/Sources/ --include='*.swift'# Expected: no output# Skills methods removed from GatewayConnection
grep -n 'skillsStatus\|skillsInstall\|skillsUpdate' apps/macos/Sources/OpenClaw/GatewayConnection.swift
# Expected: no output# Model catalog constants removed
grep -n 'modelCatalogPathKey\|modelCatalogReloadKey' apps/macos/Sources/OpenClaw/Constants.swift
# Expected: no output
Summary
Remove dead UI code from the macOS native app that references gutted backend systems. After the middleware replacement (CLI agent runtimes via ChannelBridge), two features visible in the macOS app no longer have functioning backends:
skills.*RPC methods (gutted in PR feat: gut skills system and ClawHub (#63) #64). The macOS Settings tab and onboarding skills overview call dead endpoints.ModelCatalogLoaderreadsmodels.generated.jsfrom the old in-process LLM system (gutted in PR feat: remove in-process LLM packages and dead model management #108). Themodels.listgateway method exists in the method list but has no handler implementation.The wizard/onboarding flow is ALIVE —
wizard.*gateway methods are fully functional (redesigned in PR #90). Do NOT touch wizard UI code.iOS and Android do NOT have skills settings or model catalog UI — this is macOS-only dead code.
Dead Code Inventory
Skills UI (macOS only)
apps/macos/Sources/OpenClaw/SkillsSettings.swiftGatewayConnection.shared.skillsStatus()andskillsInstall()which resolve toskills.statusandskills.installRPC methods that no longer exist on the gatewayapps/macos/Sources/OpenClaw/SkillsModels.swiftSkillsStatusReport,SkillsBin,InstalledSkilltypes used only by SkillsSettingsapps/macos/Tests/OpenClawIPCTests/SkillsSettingsSmokeTests.swiftapps/macos/Sources/OpenClaw/SettingsRootView.swiftSkillsSettings(state: self.state)tab from settings navigationapps/macos/Sources/OpenClaw/OnboardingView+Pages.swiftskillsOverviewproperty and skills list from the final onboarding page (readyPage())apps/macos/Sources/OpenClaw/GatewayConnection.swiftskillsStatusandskillsInstallcase fromMethodenum. Lines 516-535: removeskillsStatus(),skillsInstall(),skillsUpdate()convenience methodsapps/macos/Sources/OpenClaw/ExecApprovals.swiftskillsStatus()call in exec approvals contextModel Catalog (macOS only)
apps/macos/Sources/OpenClaw/ModelCatalogLoader.swiftmodels.generated.jsfrom bundle/node_modules/cache. No corresponding gateway handler exists (models.listis in the method list but has no handler implementation)apps/macos/Tests/OpenClawIPCTests/ModelCatalogLoaderTests.swiftapps/macos/Sources/OpenClaw/DebugSettings.swift@AppStorage(modelCatalogPathKey)binding (line 10),@AppStorage(modelCatalogReloadKey)binding (line 11),modelsLoadingstate (line 15), the "Reload models" UI section (~lines 430-470), and the reload function (~lines 725-735)apps/macos/Sources/OpenClaw/Constants.swiftmodelCatalogPathKey(line 41) andmodelCatalogReloadKey(line 42) constantsNOT Dead (leave alone)
wizard.start,wizard.next,wizard.cancel,wizard.statusall implemented insrc/gateway/server-methods/wizard.ts. Wizard was redesigned for RemoteClaw (PR #90).SkillsStatusParams,SkillsBinsParams, etc. inapps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swiftare auto-generated from the protocol schema. These dead types are harmless — they'll be removed when the protocol schema is cleaned up separately.Verification
Pre-check (understanding what's dead)
To verify skills methods are dead:
To verify model catalog handler is dead:
Post-change verification
Acceptance Criteria
SkillsSettings.swift,SkillsModels.swift,SkillsSettingsSmokeTests.swiftdeletedModelCatalogLoader.swift,ModelCatalogLoaderTests.swiftdeletedSettingsRootView.swiftreadyPage()GatewayConnection.swiftExecApprovals.swiftDebugSettings.swiftConstants.swiftcd apps/macos && swift buildpassesScope
~5 files deleted, ~5 files modified. macOS only. iOS and Android have no dead skills/model-catalog UI.