Releases
v0.8.0
Compare
Sorry, something went wrong.
No results found
0.8.0 (2026-10-25)
Bug Fixes
agents: the script inbox is no longer dropped with the stack frame (43b66f2 )
assets: a material's textures load with it (21805ef )
control: gameplay time no longer follows the physics strategy (86ee883 )
correctness pass — ECS undefined behavior, Ergon silent wrongs, script persistence holes (f01ec86 )
data: a marker component belongs in the scene that declared it (84a6046 )
data: a placed entity always has a world pose (5ffa39a )
ecs: compaction repoints by row, not by identity (e7b38a7 )
ecs: component-less queries and cross-domain Without/Option terms (34f938f )
ecs: cross-domain queries skip orphan rows and dead entities (67eb616 )
ecs: make the field-SoA component path work end to end (6a052b4 )
ecs: removing a row next to a dead orphan no longer panics (2a1102f )
editor: the engine loads the meshes and materials the editor's entities name (a67b8f7 )
graphics: flag sets cross into wgpu by declaration, not by hand (3cdd94f ), closes #279
hub: modals centred and dimming the whole window, card actions reachable, a missing editor named (58f5f79 )
io: an asset's identity has one definition, not five (eb00f8b )
lane: lanes borrow through LaneContext, soundly (31e1855 )
lanes: a deferred turn no longer loses what it was never told (4232535 )
layout: the mesh module and the lanes' test helpers follow the file conventions (95be658 )
macros: a tuple component with a skipped field derives (4ce453f )
math: a sheared transform keeps where it points; affine inverse undoes rotations (ade3806 )
math: a tiny or squashed transform keeps its rotation (b59a154 )
physics: a dynamic body keeps the velocity gravity gave it (12e1234 )
physics: colliders honour their authored fields and the body's scale (69c0a13 )
physics: stacked rigid bodies stand still instead of exploding or freezing (ece53d1 )
render: a mirrored entity is drawn outside out (67e29cf )
render: the sky no longer repaints the glass (5752c52 )
scene: what reading a game save adapts reaches the load report — once, and only for what loads (5ff4649 )
scripting: hot reload and mount agree on one script folder (964e547 )
scripting: null survives a save, text survives a stop, a state calls its own methods (aa20b01 )
script: the docs of deleted methods stayed behind (b7d6f74 )
script: the scripting chain runs outside khora-runtime (01ac950 )
ui: controls revealed while a row is pointed at no longer vanish as the pointer reaches them (ecb2692 )
ui: UI text reaches the screen and follows the colour target (7237d05 )
Features
agent: sweep cargo's target/ at the start of each agent session (ce72e9c )
assets: a glTF's scenes, meshes, materials and textures are assets of their own (3b224c9 )
assets: hot reload refreshes assets already on screen (ca9f0a9 )
control: pausing is a clock, not a mode (8b2c2a4 )
core: an agent declares what it contends with the others for (93f067e )
core: one channel structure, instantiated per event type (fce8416 )
data: a component publishes its shape (f7ed1aa )
data: the simulation writes where it put a body, not where its author did (4e94157 )
ecs: column writes — one command writes many rows of a component in a page-grouped pass; conflicts per field (8417671 )
ecs: component keys — declared components in CRPECS pages, one vtable per component (7a0161f )
ecs: typed component access — script writes without JSON, column snapshots (445032d )
editor: components a script declares in the inspector — typed cards, the add menu, prefab overrides (76c713a )
editor: dropping a glTF places its scene, node by node with its materials (2743364 )
editor: New Script avoids names other scripts already declare (d3d74a1 )
editor: New Script in the Assets panel (71d26f6 )
editor: prefab overrides in the inspector — see, revert, apply (42682f8 )
editor: the inspector shows a declared field's [Header], [Tooltip] and [Range] (b9a8604 )
editor: the inspector's asset slot (1b8ec1a )
editor: where a script problem is, and a Problems tab — compile, registration and running problems, located (92d2938 )
ergon: a conformance suite, and every script body resumes where it stopped (54fd0ad )
hub: a new project starts with gameplay that runs (2483c38 )
input: the raw stream survives, and losing focus lets go (8774729 )
persistence: a schema-bound snapshot — FastestLoad loads 9x faster (c6f6614 )
persistence: authored scenes, observed saves — a game save is a three-way merge (6b67cec )
persistence: prefab instances stay linked — a prefab edit reaches every instance (e29a0fd )
persistence: records — what a save holds, by name (4df3d77 )
persistence: scene records end to end — pages, identity, atomic load (9d8fbf2 )
physics: a body reports the velocity it has, not the one it was given (9f5412d )
physics: a contact can name the entities that made it (b4bc286 )
physics: collisions become events on a channel, not a component (3d4f27f )
physics: moving something is declared, not inferred from a difference (7630a01 )
render: a glTF material's specular strength and colour shade it (ff5e125 )
render: one mesh vertex; a glTF's default scene decodes as one mesh (f77f847 )
render: the camera follows its target, and bad camera or light data never breaks a frame (b6e3fab )
script: #[ergon_fn] — exposing an engine function by annotating it (2306b6c )
script: a collision finally reaches a behavior (05ca4f3 )
script: a saved scene loads the state it saved (56a65de )
script: a script can ask what the player is holding (1b89f78 )
script: a script can name the engine's components (0a76ee0 )
script: an engine type is declared, and read with v.x (d01be03 )
script: Ergon bytecode compiler, and a VM that can call (98218ff )
script: Ergon diagnostics and lexer (6e476d3 )
script: Ergon ECS bridge — world commands, script component and flow (4ba047e )
script: Ergon frame arena and persistent store (491ba01 )
script: Ergon module resolution (df67762 )
script: Ergon syntax tree and parser (3e28847 )
script: Ergon type checker (95e4c7e )
script: event dispatch — declared is subscribed, and nothing detaches (390056f )
script: every and after — declarative time, without a clock (d06aaa4 )
script: hot-reload that carries an instance's state across an edit (799dfe1 )
scripting: FixedUpdate runs once per fixed step — a fixed clock in the turn (774d687 )
scripting: Spawn(prefab, …, at:, facing:) and e.SetMaterial(m) (d35f392 )
scripting: Spawn returns its entity; a faulted turn applies nothing (da0d664 )
scripting: a collision tells every entity running a behavior — by its component, through World::behavior_components (91194a1 )
scripting: a frame's fuel shared among behaviors — equal shares, rotating remainder, debt for overdraft, a cursor per behavior (4e7092f )
scripting: a game attaches a behavior by its component — declarations registered before setup, GameWorld::add_declared_component (952669f )
scripting: a recorded lifecycle, OnLoad — and scripts run only while the game does (24eb30b )
scripting: a suspended body survives an edit of its script — resume in tiers (42434eb )
scripting: a watchdog for bodies that never finish, and the docs of systems and queries (1191cfa )
scripting: asset references — Prefab?, Sound?, Material?, Mesh?, Texture?, Scene? (c38a9d2 )
scripting: behaviors are components — each declares its authored component and its runtime state companion, persisted by provenance (4be62f7 )
scripting: behaviors attached by their component run — rows in, changed fields and state written back a column at a time (2406d33 )
scripting: Ergon component reads — e.Get(C), e.Has(C), a working set per frame (c697274 )
scripting: Ergon component writes — e.Set, e.Add, e.Remove, Spawn, entity methods (29539dd )
scripting: Ergon control flow, and the rest of runtime correctness (db77e8c )
scripting: Ergon script-defined components — declared in scripts, registered at the frame boundary, saved by their own declaration (1f21002 )
scripting: Ergon values — arrays, structs, ?., foreach, Push/RemoveAt (e43bc8f )
scripting: events delivered by table — a payload that does not fit is dropped and reported (6426668 )
scripting: inspector attributes on fields — [Range], [Tooltip], [Header] checked and carried (46f64d9 )
scripting: named arguments and parameter defaults (fa7a485 )
scripting: scheduling attributes checked and stored — [Critical], [Budget(0.2ms)], [Rate(10hz)] (46989c7 )
scripting: string interpolation — $"hp: {h.current} / {h.max}" (9495cd7 ), closes Entity#12
scripting: systems and queries in the language — system items, foreach (…) with … without … (df1a7c1 )
scripting: systems run — one entity per system, one run order, ref rows written back (5d60be4 )
scripting: the script lane schedules by [Critical], [Budget] and [Rate] — and no frame's time is lost (b16d505 )
script: live behavior state reaches the scene, for the instances that moved (963f75f )
script: prove Ergon's interruptible VM before designing its syntax (9e8043c )
script: states and become — a state's data exists only while it is in it (1ff0bd0 )
script: strings — literals in the program, computed text in the arena (746569d )
script: the .erg decoder and the import graph hot-reload walks (46c4223 )
script: the hot-reload pump, and the channel it had to cross (b7452e1 )
script: the scripting agent and its budgeted lane (e36bfa7 )
tools: the Khora sign, a light hub, brand fonts and loading films (d85f520 )
xtask: a one-time upgrade of a project's scenes, prefabs and saves from Script to behavior components (b785945 )
xtask: upgrade-scenes — rewrite a project's v1 scenes once (f39cd84 )
You can’t perform that action at this time.