{"record":{"id":"75565205604b4e95","repo":"musistudio/claude-code-router","slug":"only-http-and-https-urls-can-be-opened","errorCode":null,"errorMessage":"Only http and https URLs can be opened.","messagePattern":"Only http and https URLs can be opened\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/electron/src/main/ipc.ts","lineNumber":192,"sourceCode":"  return proxyService.setNetworkCaptureEnabled(Boolean(enabled));\n});\nipcMain.handle(IPC_CHANNELS.appSelectPluginDirectory, async (event) => {\n  const window = BrowserWindow.fromWebContents(event.sender);\n  const options: OpenDialogOptions = {\n    buttonLabel: \"Select plugin\",\n    properties: [\"openDirectory\"],\n    title: \"Select plugin directory\"\n  };\n  const result = window ? await dialog.showOpenDialog(window, options) : await dialog.showOpenDialog(options);\n  if (result.canceled || result.filePaths.length === 0) {\n    return undefined;\n  }\n  return inspectPluginDirectory(result.filePaths[0]);\n});\nipcMain.handle(IPC_CHANNELS.appOpenExternal, async (_event, url: string) => {\n  const parsed = new URL(url);\n  if (![\"http:\", \"https:\"].includes(parsed.protocol)) {\n    throw new Error(\"Only http and https URLs can be opened.\");\n  }\n  await shell.openExternal(parsed.toString());\n});\nipcMain.handle(IPC_CHANNELS.appOpenProfile, async (_event, request: ProfileOpenRequest) => {\n  const syncedClaudeAppConfig = await syncClaudeAppGatewayConfig(await loadAppConfig());\n  const profile = findProfileForOpen(syncedClaudeAppConfig.config, request.profileId);\n  const surface = resolveProfileOpenSurface(profile, request.surface);\n  const config = profile.agent === CLAUDE_DESIGN_PLUGIN_ID\n    ? withClaudeDesignRuntimePluginConfig(syncedClaudeAppConfig.config)\n    : syncedClaudeAppConfig.config;\n  if (profile.agent === CLAUDE_DESIGN_PLUGIN_ID) {\n    const status = await gatewayService.ensureStarted(config);\n    if (status.state !== \"running\") {\n      throw new Error(status.lastError || \"CCR gateway did not start.\");\n    }\n    logProfileApplyResult(await applyProfileConfig(config));\n    await deepLinkService.openPluginApp(CLAUDE_DESIGN_PLUGIN_ID);\n    return {","sourceCodeStart":174,"sourceCodeEnd":210,"githubUrl":"https://github.com/musistudio/claude-code-router/blob/99f24806c6a2c660b16e53e95211c517448a6c90/packages/electron/src/main/ipc.ts#L174-L210","documentation":"Error \"Only http and https URLs can be opened.\" thrown in musistudio/claude-code-router.","triggerScenarios":"Thrown at packages/electron/src/main/ipc.ts:192 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"99f24806c6a2c660b16e53e95211c517448a6c90","analyzedAt":"2026-08-27T04:11:01.184Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}