actualbudget/actual · error · Error
Font path "${path}" is not allowed. Only relative paths with
Error message
Font path "${path}" is not allowed. Only relative paths within the repo are supported (no "/" prefix or ".." segments). What it means
Error "Font path "${path}" is not allowed. Only relative paths within the repo are supported (no "/" prefix or ".." segments)." thrown in actualbudget/actual.
Source
Thrown at packages/desktop-client/src/style/customThemes.ts:574
urlRegex.lastIndex = 0;
while ((urlMatch = urlRegex.exec(blockContent)) !== null) {
const fullMatch = urlMatch[0];
const quote = urlMatch[1] || '';
const path = urlMatch[2] ?? urlMatch[3];
// Skip data: URIs — already embedded
if (path.startsWith('data:')) continue;
if (/^https?:\/\//i.test(path)) {
throw new Error(
`Remote font URL "${path}" is not allowed. Only relative paths to fonts in the same GitHub repo are supported.`,
);
}
const cleanPath = path.replace(/^\.\//, '');
if (cleanPath.startsWith('/') || cleanPath.includes('..')) {
throw new Error(
`Font path "${path}" is not allowed. Only relative paths within the repo are supported (no "/" prefix or ".." segments).`,
);
}
const ext = cleanPath.substring(cleanPath.lastIndexOf('.')).toLowerCase();
const mime = FONT_EXTENSION_MIME[ext];
if (!mime) {
throw new Error(
`Unsupported font file extension "${ext}". Supported: ${Object.keys(FONT_EXTENSION_MIME).join(', ')}.`,
);
}
fontRefs.push({ fullMatch, quote, path, cleanPath, mime });
}
offset = closeBrace + 1;
searchCss = searchCss.substring(offset);
}View on GitHub (pinned to d4334cb6e6)
When it happens
Trigger: Thrown at packages/desktop-client/src/style/customThemes.ts:574 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of actualbudget/actual@d4334cb6e6 (2026-08-29).
Data as JSON: /api/errors/69a6220feb1e216a.
Report an issue: GitHub.