Skip to content

Release: 3 features, 2 fixes, 2 perfs, 1 build, 2 refactors, 1 test, 4 chores → Main - #15151

Merged
h0lybyte merged 15 commits into
mainfrom
dev
Aug 2, 2026
Merged

Release: 3 features, 2 fixes, 2 perfs, 1 build, 2 refactors, 1 test, 4 chores → Main#15151
h0lybyte merged 15 commits into
mainfrom
dev

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Release: Dev → Main

15 atomic commits ready for main

Features

Bug Fixes

Performance

Build

Refactoring

Tests

Chores

Builds on merge

Package Type Version Source
axum-kbve docker v1.0.265 → v1.0.266 api.mdx
herbmail-game vite_game v0.1.14 → v0.1.15 herbmail-game.mdx

This PR is automatically maintained by CI — KBVE Studio

DroidEventSchemas gained 'reel-stream' in #15134 without the spec being
updated, so droid:test failed on `toHaveLength(21)` against 22 keys. The
count assertion has drifted three times now (19 -> 21 -> 22) because it
carries no information about which key changed.

Compare the sorted key set against an explicit list instead. A missing or
unexpected event now fails with the key name in the diff, and the partial
toContain list it replaces no longer silently misses new keys.
Unused in practice and awkward to fly. Removing it also retires a
black-screen suspect: while active it set visible=false on every mesh in
the scene and relied on effect cleanup to put ~3000 of them back, holding
a Map entry per mesh for the duration.

Its two sim gates go with it — PropRenderer no longer short-circuits the
frame and ThirdPersonPlayer no longer zeroes input or blocks pointer lock.
playerAnchor and drei's OrbitControls stay; both have other consumers.
@github-actions github-actions Bot changed the title Release: 1 test → Main Release: 1 refactor, 1 test → Main Aug 2, 2026
The vendored water lib builds its wave surface from PlaneGeometry(2, 2,
200, 200) — 40k quads, 80k triangles each. A visible oasis carries two of
them (above + below), so one pool cost 160k triangles: more than a third
of the frame at spawn, and far past what the PSX look needs.

Measured on a production preview build at the same spawn state:
412,963 -> 269,347 peak triangles, exactly 2 x (80,000 - 8,192).

Segment count is now a constructor arg on both passes, defaulting to the
vendored 200 so the vendor files stay drop-in, with the app choosing the
value in water/constants.ts. Caustics are left at 200: their grid drives
caustic pattern detail rather than scene triangles, and headless warping
drops the player out of the streamed world, so the coarser value could not
be compared visually here. That one is a single constant away if it looks
fine on real hardware.
@github-actions github-actions Bot changed the title Release: 1 refactor, 1 test → Main Release: 1 perf, 1 refactor, 1 test → Main Aug 2, 2026
@github-actions github-actions Bot changed the title Release: 1 perf, 1 refactor, 1 test → Main Release: 1 perf, 1 refactor, 1 test, 1 chore → Main Aug 2, 2026
@github-actions github-actions Bot changed the title Release: 1 perf, 1 refactor, 1 test, 1 chore → Main Release: 1 perf, 1 refactor, 1 test, 2 chores → Main Aug 2, 2026
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@h0lybyte
h0lybyte self-requested a review as a code owner August 2, 2026 09:00
…off reserved itemdb fields (#15154)

* docs(plan): professiondb Phase 2b-Rust engine consumers

* feat(bevy_items): add professiondb loader module

* chore(axum-kbve): embed professiondb-data.json for the gameserver

* feat(engine): move Rust skilling gate/XP to professiondb; regen itemdb proto

* chore(axum-kbve): drop stale SkillingInfo comment after professiondb rewire
@github-actions github-actions Bot changed the title Release: 1 perf, 1 refactor, 1 test, 2 chores → Main Release: 1 feature, 1 perf, 1 refactor, 1 test, 3 chores → Main Aug 2, 2026
github-actions Bot and others added 2 commits August 2, 2026 05:02
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Wall and door sets are authored at 512 with a colour, normal and har map
each, so the art alone held ~21MB of the ~68MB of texture memory. Downscale
them into dist at build time, mirroring how gltfpack packs the models:
public/textures stays full-res LFS truth and retargeting is one constant.

Measured on a production preview build:
  texture VRAM   68.2MB -> 49.2MB
  textures       19 of 42 shrunk, 6374K -> 2027K on disk

Normal and har maps are kept. This is a PS2-era look rather than PS1
hardware accuracy, so the POM height and normal shading tuned in #14123
stay intact; only the resolution drops.

Downscaled bytes ship at the same URL the source had, which is the exact
setup that served stale models twice before, so the hash plugin now covers
textures too and salts them with the target size — the source never changes
when only MAX_TEXTURE_SIZE does. Versioning moved into assetBase's existing
URL modifier, the one choke point every three loader already passes through,
so no call site needed touching; URLs that modelUrl already versioned are
left alone instead of stacking a second query.

sharp lands as a root devDependency (already present in the store) and the
pass fails the build rather than silently shipping full-res art if it is
missing. Power-of-two sources are asserted to stay power-of-two so tiling
seams cannot drift.
@github-actions github-actions Bot changed the title Release: 1 feature, 1 perf, 1 refactor, 1 test, 3 chores → Main Release: 1 feature, 2 perfs, 1 refactor, 1 test, 4 chores → Main Aug 2, 2026
…ive-webgpu (#15161)

Consolidates dependabot PRs #14719, #14720, #14722, #14723, #14725.

- prost/prost-build 0.13 -> 0.14 in uniti; aligns with every other crate in
  the workspace, which was already on 0.14. Regenerates the checked-in
  proto modules (additive Eq/Hash derives only).
- syn 3.0.2 -> 3.0.3 (Cargo.lock).
- @nxlv/python 22.2.1 -> 22.2.2.
- postcss-merge-rules ^7.0.8 -> ^8.0.1.
- react-native-webgpu 0.5.15 -> 0.6.3, bumped in both the root manifest and
  apps/kbve/kbve-react-native so the app does not resolve a second copy.
  Peer ranges are unchanged and Canvas/useCanvasRef/useDevice still export
  from the package root.

Not included: expo-dev-client 57 (#14728) requires Expo SDK 57 while the
workspace is on Expo 56, and pnpm/action-setup v6 (#10241) which is stale
and only covers part of the workflows still on v5/v4.
@github-actions github-actions Bot changed the title Release: 1 feature, 2 perfs, 1 refactor, 1 test, 4 chores → Main Release: 1 feature, 2 perfs, 1 build, 1 refactor, 1 test, 4 chores → Main Aug 2, 2026
Field was never read: catch odds scale off hp/max_hp/status, and the
caught pet is minted from the live combatant snapshot. Combatant already
carries level, so WildTarget.level was a second copy free to drift.

Fixes `-D dead-code` clippy failure in arpg-server:lint.
@github-actions github-actions Bot changed the title Release: 1 feature, 2 perfs, 1 build, 1 refactor, 1 test, 4 chores → Main Release: 1 feature, 1 fix, 2 perfs, 1 build, 1 refactor, 1 test, 4 chores → Main Aug 2, 2026
…per build (#15162)

public/textures is a bake output, not a master — pack_maps.py already writes
into it — so resizing on the way into dist re-derived deterministic bytes on
every build, and dev kept serving the 512s. That split is the same dev/prod
divergence that hid the gltfpack mesh-name bug, and closing it the other way
would have meant a second resize path plus a dev cache to keep in sync.

Downscale the committed art once and drop the build pass. Dev and production
now serve identical bytes because there is only one copy. Build cost goes
from 233ms per uncached build to zero, sharp leaves the dependency tree, and
the texture hash no longer needs a size salt since a retarget changes the
file itself.

art/textures/downscale.py is the repeatable step, sitting next to pack_maps
whose SIZE now matches. 19 textures, 6374K -> 1686K on disk.
@github-actions github-actions Bot changed the title Release: 1 feature, 1 fix, 2 perfs, 1 build, 1 refactor, 1 test, 4 chores → Main Release: 1 feature, 1 fix, 2 perfs, 1 build, 2 refactors, 1 test, 4 chores → Main Aug 2, 2026
@github-actions github-actions Bot changed the title Release: 1 feature, 1 fix, 2 perfs, 1 build, 2 refactors, 1 test, 4 chores → Main Release: 1 feature, 2 fixes, 2 perfs, 1 build, 2 refactors, 1 test, 4 chores → Main Aug 2, 2026
Phases A and B of #15159. Pets could be caught, healed and named, but not
grown: PetProgress.xp was initialised to 0 and never incremented anywhere,
and base_xp_yield and growth_rate were declared on NpcPet with no readers
outside a test fixture. A mechamutt caught at level 5 stayed level 5.

Phase A brings the Rust parser up to the PetInfo proto, which had drifted
ahead of it: gender_ratio, secondary_element and evolutions were present in
the proto, the generated JSON and the TS schema, but absent from NpcPet, so
the sim silently dropped them. Also authors cyber-hound, the species
mechamutt has pointed evolves_to_ref at since it was written — nothing read
evolutions, so the dangling reference went unnoticed. Two data guards now
fail the build if either recurs.

Phase B adds simgrid::progress: the six canonical growth curves keyed off
the species' growth_rate, xp_yield, and grow_pet as the single writer of
PetProgress and the level-driven half of PetVitals. Level-up carries current
HP across proportionally rather than refilling it — phase D of #14948 made
battle damage persist, and a free heal per level would hand it straight
back. A grown pet ends up stat-identical to one minted at the same level,
since both go through level_scale.

On the server, finish_duel queues each owned pet's share into PendingPetXp
and apply_pet_xp drains it in its own system — the same split vitals.rs
uses, because growing a pet needs &mut PetProgress and &mut PetVitals,
which PetBank reads. Only fainted foes pay out, so a forfeit wins the battle
and earns nothing, and a catch pays nothing because the pet is the reward.

The wire is unchanged: PetView already carries level and xp, and the hub
already renders both. A progress bar needs xp_to_next, which the client
cannot derive without mirroring the curves; that ships with phase C, which
changes the wire anyway for move-learn prompts.

Also drops WildTarget.level, which #15028 added and never read — the caught
pet is minted from the live combatant, so its level comes from the battle.
…reicon Unity migration (#15164)

* docs(plan): professiondb Phase 2b-Unity consumers

* docs(plan): professiondb Phase 2b-Unity — engine-neutral runtime view

* professiondb: emit engine-neutral runtime view + add sync:professiondb

* professiondb: regenerate data + runtime view + Unity sync

* rareicon: add professiondb runtime-view POCOs

* rareicon: add professiondb cache + loader system

* rareicon: materialise harvest/compress from professiondb runtime view, drop dead itemdb defs

* professiondb: add descriptor to sync:professiondb cache inputs
@github-actions github-actions Bot changed the title Release: 1 feature, 2 fixes, 2 perfs, 1 build, 2 refactors, 1 test, 4 chores → Main Release: 3 features, 2 fixes, 2 perfs, 1 build, 2 refactors, 1 test, 4 chores → Main Aug 2, 2026
@h0lybyte
h0lybyte merged commit 27fe7ed into main Aug 2, 2026
20 checks passed
@github-project-automation github-project-automation Bot moved this from Review to Done in KBVE Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

1 participant