musistudio/claude-code-router · error

Unsupported PNG filter: ${filter}

Error message

Unsupported PNG filter: ${filter}

What it means

Error "Unsupported PNG filter: ${filter}" thrown in musistudio/claude-code-router.

Source

Thrown at packages/electron/src/main/ipc.ts:819

    sourceOffset += stride;
  }

  return {
    bitDepth,
    colorType: colorType as 2 | 6,
    height,
    pixels,
    width
  };
}

function unfilterPngByte(filter: number, raw: number, left: number, up: number, upLeft: number): number {
  if (filter === 0) return raw;
  if (filter === 1) return (raw + left) & 0xff;
  if (filter === 2) return (raw + up) & 0xff;
  if (filter === 3) return (raw + Math.floor((left + up) / 2)) & 0xff;
  if (filter === 4) return (raw + pngPaethPredictor(left, up, upLeft)) & 0xff;
  throw new Error(`Unsupported PNG filter: ${filter}`);
}

function pngPaethPredictor(left: number, up: number, upLeft: number): number {
  const estimate = left + up - upLeft;
  const leftDistance = Math.abs(estimate - left);
  const upDistance = Math.abs(estimate - up);
  const upLeftDistance = Math.abs(estimate - upLeft);
  if (leftDistance <= upDistance && leftDistance <= upLeftDistance) return left;
  if (upDistance <= upLeftDistance) return up;
  return upLeft;
}

function pngPixelsToRgba(decoded: DecodedPngPixels): Uint8Array {
  const rgba = new Uint8Array(decoded.width * decoded.height * 4);
  const sourceChannels = decoded.colorType === 6 ? 4 : 3;
  for (let source = 0, target = 0; source < decoded.pixels.length; source += sourceChannels, target += 4) {
    rgba[target] = decoded.pixels[source];
    rgba[target + 1] = decoded.pixels[source + 1];

View on GitHub (pinned to 99f24806c6)

When it happens

Trigger: Thrown at packages/electron/src/main/ipc.ts:819 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of musistudio/claude-code-router@99f24806c6 (2026-08-27). Data as JSON: /api/errors/f4cb7c97e21f118d. Report an issue: GitHub.