mirror of
https://github.com/actualbudget/actual.git
synced 2026-05-06 07:01:45 -05:00
* [AI] Add nightly CI scan for custom theme catalog Adds a scheduled GitHub Actions workflow that fetches `actual.css` from every repo in `customThemeCatalog.json` and runs it through the same `embedThemeFonts` + `validateThemeCss` pipeline the app uses at install time. Failing themes fail the job so maintainers get an alert when a third-party repo introduces a regression. The scan treats fetched CSS as opaque text: never executed, never injected into a DOM, size-capped at 512 KB per file, 15s per fetch, restricted to raw.githubusercontent.com with redirects disabled, and run with `contents: read` permissions only. Each catalog `repo` is schema-checked against `owner/repo` before being interpolated into the URL. * [AI] Simplify theme catalog scan - Reuse `CatalogTheme` type from customThemes instead of duplicating as `CatalogEntry` in the script. - Hoist `appendFileSync` to the static `node:fs` import; drop the dynamic import inside `writeStepSummary`. - Drop the narrative header docstring and the trailing `// ...` comments that just restated constant names. - Drop the redundant URL-prefix re-check inside the CSS fetch helper; the single call site constructs the URL from a pinned literal. - Drop the 250 ms inter-request delay (GitHub Raw rate limits are not relevant for 21 requests, and the trailing delay was idle wall-clock against the 10-min job budget). - Give each font fetch inside `embedThemeFonts` its own 15 s timeout via `AbortSignal.any`, instead of sharing one signal across every font in a theme. Drop the now-unnecessary caller-supplied signal from the CI call site. * [AI] Fix lint on theme catalog scan imports