ludic/selfhost/backend
Orkuncakilkaya f2cb3cd7e8
All checks were successful
bootstrap / cfree-fixpoint (push) Successful in 22s
ci / build-and-test (push) Successful in 2m27s
commit-lint / conventional-commits (push) Successful in 5s
docs / build-and-deploy (push) Successful in 28s
feat(assets): #82 incremental asset preloading + loading-scene pattern
Assets loaded synchronously in Boot stalled the first frame(s). Adds an
Assets.* preload queue over the #81 atlas: Assets.enqueue(name, path) queues a
named image without loading it, Assets.pump(max) loads up to max per frame
(returns how many), and Assets.total/loaded/ready/progress (0..100) drive a
progress bar. A loading scene pumps a few per frame, draws Assets.progress(),
and becomes the play scene once Assets.ready() — the deterministic, no-threads
form of async preloading (work spread across frames; same enqueue+pump order
loads identically every run). Loaded assets are reachable by name via
Assets.get / Sprite.named.

Example preload (enqueue 3, pump incrementally 0->33->66->100, ready flips, get
by name) prints 3 0 0 0 1 33 66 1 100 1. 6 docs pages. Full suite 117/0,
fixpoint holds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-02 08:19:19 +03:00
..
game feat(input,ecs): #79 Input.axis_i directional int + #84 world bounds 2026-09-02 07:44:41 +03:00
stdlib feat(engine): Tiled P1 — rt_tmap model + GID resolver + render + projection (#69) 2026-09-01 14:43:29 +03:00
emit_addr.ludic feat(engine): Tiled P1 — rt_tmap model + GID resolver + render + projection (#69) 2026-09-01 14:43:29 +03:00
emit_call.ludic feat(assets): #82 incremental asset preloading + loading-scene pattern 2026-09-02 08:19:19 +03:00
emit_core.ludic feat(compiler): dynamic system registration + --emit-module for binary packages (#64) 2026-09-01 07:44:18 +03:00
emit_decl.ludic feat(input,ecs): #79 Input.axis_i directional int + #84 world bounds 2026-09-02 07:44:41 +03:00
emit_expr.ludic feat(errors): recoverable failures as values — try/else over ok/err results (#46) 2026-08-31 15:04:14 +03:00
emit_head.ludic feat(input): #89 cursor capture — Input.cursor_mode (hide/lock/confine) 2026-09-02 08:06:34 +03:00
emit_intrin.ludic feat(input,ecs): #79 Input.axis_i directional int + #84 world bounds 2026-09-02 07:44:41 +03:00
emit_intrin2.ludic feat(input): #89 cursor capture — Input.cursor_mode (hide/lock/confine) 2026-09-02 08:06:34 +03:00
emit_mem.ludic refactor(selfhost): reorganise into concern-based subdirectories 2026-08-31 00:26:02 +03:00
emit_new.ludic feat(lang): new Type { field: value } record initialisers 2026-08-31 01:20:06 +03:00
emit_stmt.ludic feat(types): tagged-union enums — variant payloads + binding match + exhaustiveness (#56) 2026-09-01 03:07:46 +03:00