{"record":{"id":"f4cb7c97e21f118d","repo":"musistudio/claude-code-router","slug":"unsupported-png-filter-filter","errorCode":null,"errorMessage":"Unsupported PNG filter: ${filter}","messagePattern":"Unsupported PNG filter: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/electron/src/main/ipc.ts","lineNumber":819,"sourceCode":"    sourceOffset += stride;\n  }\n\n  return {\n    bitDepth,\n    colorType: colorType as 2 | 6,\n    height,\n    pixels,\n    width\n  };\n}\n\nfunction unfilterPngByte(filter: number, raw: number, left: number, up: number, upLeft: number): number {\n  if (filter === 0) return raw;\n  if (filter === 1) return (raw + left) & 0xff;\n  if (filter === 2) return (raw + up) & 0xff;\n  if (filter === 3) return (raw + Math.floor((left + up) / 2)) & 0xff;\n  if (filter === 4) return (raw + pngPaethPredictor(left, up, upLeft)) & 0xff;\n  throw new Error(`Unsupported PNG filter: ${filter}`);\n}\n\nfunction pngPaethPredictor(left: number, up: number, upLeft: number): number {\n  const estimate = left + up - upLeft;\n  const leftDistance = Math.abs(estimate - left);\n  const upDistance = Math.abs(estimate - up);\n  const upLeftDistance = Math.abs(estimate - upLeft);\n  if (leftDistance <= upDistance && leftDistance <= upLeftDistance) return left;\n  if (upDistance <= upLeftDistance) return up;\n  return upLeft;\n}\n\nfunction pngPixelsToRgba(decoded: DecodedPngPixels): Uint8Array {\n  const rgba = new Uint8Array(decoded.width * decoded.height * 4);\n  const sourceChannels = decoded.colorType === 6 ? 4 : 3;\n  for (let source = 0, target = 0; source < decoded.pixels.length; source += sourceChannels, target += 4) {\n    rgba[target] = decoded.pixels[source];\n    rgba[target + 1] = decoded.pixels[source + 1];","sourceCodeStart":801,"sourceCodeEnd":837,"githubUrl":"https://github.com/musistudio/claude-code-router/blob/99f24806c6a2c660b16e53e95211c517448a6c90/packages/electron/src/main/ipc.ts#L801-L837","documentation":"Error \"Unsupported PNG filter: ${filter}\" thrown in musistudio/claude-code-router.","triggerScenarios":"Thrown at packages/electron/src/main/ipc.ts:819 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"}