feat(ludic.update): a Velopack game updating itself, a frame at a time
latest.json asked once and polled (the newest version and its notes, in a language or English); then Velopack's releases.<os>.json, the plan (the delta chain when the installed full package is on disk, no delta is missing and the chain weighs less than the full one; the newest full package otherwise, named as the feed names it), each package streamed to the packages folder with its bytes on a bar and an eased pace, its SHA-256 by Get-FileHash or shasum in a child, Update patch per delta and Update apply --waitPid. macOS keeps its packages outside the bundle and names --rootDir and --packageDir; a translocated app is not installed. Ports with the runtime as every default: UpdateWorld (platform, exe, pid, now_ms), UpdateNet (get, download, poll, text, received, free), UpdateProc (spawn, poll, free). Config: feed, app_id, version, root, packages, mac_packages, scratch. It words nothing: states, UPDATE_ERR_* codes and numbers, and UPDATE_STARTED / _STOPPED / _APPLYING facts - the game exits on the last. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
63e29f024c
commit
3514d46954
13 changed files with 1103 additions and 0 deletions
14
packages/ludic.update/index.ludic
Normal file
14
packages/ludic.update/index.ludic
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# ludic.update - is there a newer version (latest.json, polled a frame at a time), and installing it
|
||||
# through Velopack a frame at a time: feed, plan, fetch, check, patch, apply
|
||||
module ludic_update uses ludic_base
|
||||
numbers float
|
||||
import "ludic.base"
|
||||
import "state.ludic"
|
||||
import "ports.ludic"
|
||||
import "install.ludic"
|
||||
import "latest.ludic"
|
||||
import "plan.ludic"
|
||||
import "chain.ludic"
|
||||
import "steps.ludic"
|
||||
import "tick.ludic"
|
||||
import "queries.ludic"
|
||||
Loading…
Add table
Add a link
Reference in a new issue