7532446e46
Generic: Project CI / Lint & Validate (pull_request) Successful in 13s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Failing after 10s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
#106 — BatchController now paginates by id cursor (WHERE c.id > :lastId) instead of always querying offset 0. A row that fails to insert falls behind the cursor and is not re-fetched, so the batch always terminates and reaches 100% even with persistent failures. process() returns examined + last_id; the editor JS drives the cursor and stops when a chunk examines 0 rows. #100 — Sitemap: - Throttle: regenerate at most once per 60s on content save (SITEMAP_MIN_INTERVAL) so bulk edits/imports don't rebuild the whole file every save - SEF URLs: route each article via Route::link('site', ...) with a fallback to the non-SEF index.php URL if routing fails (worst case = prior behavior) (access-level filtering + atomic write were done earlier in the cycle)