doxa-life + doxa-maps drop-in CDN (public/doxa-maps-cdn) — Forgejo working copy
Mounting strictly one card at a time and waiting for idle between each put a floor under the whole run. With the wait capped at two seconds, thirty-seven cards spend up to seventy-four seconds waiting before any card's own work is counted, so the cards at the end of the page ran out of budget. The measurements say the queue, not a resource limit. Every card mounted at once passed thirty-six of thirty-seven; serialising them dropped it to thirty-three, with the three failures at the end of the page. A change that makes a resource shortage better cannot make the result worse. Two of those three cards nest no map at all, so they hold no graphics context to be starved of, and all three are non-production, which is what sorts them last. Keep the yield, since it is what stops one heavy plugin freezing the page, but bound its worst case: idle already resolves as soon as the browser is free, so the timeout only applies when it never is. Two cards may now mount at once, which halves the queue without returning to everything-in-view-at-once. The counter that limits concurrency is released in a finally, because it gates every later mount and a throw would stall the page silently. |
||
|---|---|---|
| .claude/skills | ||
| app | ||
| config | ||
| embeddables | ||
| i18n/locales | ||
| migrations | ||
| modules | ||
| public | ||
| server | ||
| .blueprints.json | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| .mcp.json | ||
| bun.lock | ||
| DX-MAPS-GALLERY.md | ||
| eslint.config.mjs | ||
| i18n.config.ts | ||
| nuxt.config.ts | ||
| package.json | ||
| tsconfig.json | ||