{"record":{"id":"505baf190df62c62","repo":"actualbudget/actual","slug":"remote-font-url-path-is-not-allowed-only-rel","errorCode":null,"errorMessage":"Remote font URL \"${path}\" is not allowed. Only relative paths to fonts in the same GitHub repo are supported.","messagePattern":"Remote font URL \"(.+?)\" is not allowed\\. Only relative paths to fonts in the same GitHub repo are supported\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/desktop-client/src/style/customThemes.ts","lineNumber":566,"sourceCode":"\n    const closeBrace = searchCss.indexOf('}', openBrace + 1);\n    if (closeBrace === -1) break;\n\n    const blockContent = searchCss.substring(openBrace + 1, closeBrace);\n\n    // Find url() references within this block\n    let urlMatch;\n    urlRegex.lastIndex = 0;\n    while ((urlMatch = urlRegex.exec(blockContent)) !== null) {\n      const fullMatch = urlMatch[0];\n      const quote = urlMatch[1] || '';\n      const path = urlMatch[2] ?? urlMatch[3];\n\n      // Skip data: URIs — already embedded\n      if (path.startsWith('data:')) continue;\n\n      if (/^https?:\\/\\//i.test(path)) {\n        throw new Error(\n          `Remote font URL \"${path}\" is not allowed. Only relative paths to fonts in the same GitHub repo are supported.`,\n        );\n      }\n\n      const cleanPath = path.replace(/^\\.\\//, '');\n\n      if (cleanPath.startsWith('/') || cleanPath.includes('..')) {\n        throw new Error(\n          `Font path \"${path}\" is not allowed. Only relative paths within the repo are supported (no \"/\" prefix or \"..\" segments).`,\n        );\n      }\n\n      const ext = cleanPath.substring(cleanPath.lastIndexOf('.')).toLowerCase();\n      const mime = FONT_EXTENSION_MIME[ext];\n      if (!mime) {\n        throw new Error(\n          `Unsupported font file extension \"${ext}\". Supported: ${Object.keys(FONT_EXTENSION_MIME).join(', ')}.`,\n        );","sourceCodeStart":548,"sourceCodeEnd":584,"githubUrl":"https://github.com/actualbudget/actual/blob/d4334cb6e6123f4d3bcea1ad6166608884c7e658/packages/desktop-client/src/style/customThemes.ts#L548-L584","documentation":"Error \"Remote font URL \"${path}\" is not allowed. Only relative paths to fonts in the same GitHub repo are supported.\" thrown in actualbudget/actual.","triggerScenarios":"Thrown at packages/desktop-client/src/style/customThemes.ts:566 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":"d4334cb6e6123f4d3bcea1ad6166608884c7e658","analyzedAt":"2026-08-29T01:02:11.213Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}