Skip to content

Release: 3 features, 5 fixes, 1 chore → Main#9652

Merged
h0lybyte merged 11 commits intomainfrom
dev
Apr 4, 2026
Merged

Release: 3 features, 5 fixes, 1 chore → Main#9652
h0lybyte merged 11 commits intomainfrom
dev

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Apr 4, 2026

Release: Dev → Main

10 atomic commits ready for main

Features

Bug Fixes

Chores

Other Changes


This PR is automatically maintained by CI — KBVE Studio

…ration (#9651)

Build a data-driven creature system alongside existing per-creature modules.
Creatures are defined as SpriteCreatureType descriptors with animation sets,
movement profiles, behavior weights, and direction models — eliminating
per-creature hardcoded spawn/animate/tint systems.

- Add creatures/generic/ module: types, definitions, spawn, animate, tint
- Add shared build_billboard_quad() and patrol_seed() to common.rs
- Migrate boar as first creature to the generic system
- Add unified tint_sprite_creatures system to weather plugin
- Make sun_params/SunParams pub(crate) for generic tint access

Legacy per-creature modules (frog, wolf, stag, wraith) remain active.
Future phases will migrate them one at a time.
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor Author

github-actions Bot commented Apr 4, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA db4e088.
Ensure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice.

Scanned Files

None

@github-actions github-actions Bot changed the title Release: 1 feature → Main Release: 1 feature, 1 chore → Main Apr 4, 2026
h0lybyte and others added 3 commits April 4, 2026 17:08
* fix(firecracker): allow dashboard proxy ingress in NetworkPolicy

The axum-kbve dashboard proxy (kbve namespace) was blocked by the
NetworkPolicy which only allowed ingress from kilobase/functions.
Add a second ingress rule for the kbve namespace. Also switch namespace
selectors to kubernetes.io/metadata.name (auto-applied by K8s) instead
of custom labels that may not exist.

* fix(firecracker): restrict kbve ingress to app:kbve pod only

The previous rule allowed any pod in the kbve namespace. Now scoped
to only pods with app=kbve label (the axum-kbve dashboard proxy).

* security(firecracker): add egress lockdown and default-deny namespace policy

- Add Egress policy to firecracker-ctl: only DNS (kube-system:53) allowed,
  no access to databases, Supabase, or any other cluster service
- Add default-deny-all policy for the entire firecracker namespace: all pods
  start with zero ingress/egress, only explicit exceptions apply
- Prevents lateral movement if a microVM escapes Firecracker's jailer sandbox

* fix(dashboard): move VNC controls to bottom, fix normal view height

- Move toolbar + status bar below the VNC canvas so fullscreen controls
  are not hidden under the site navbar
- Add explicit height: 480 in normal view so noVNC canvas renders
  without requiring fullscreen
- Combine controls and hint text into a single bottom panel
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…owing (#9650)

New badger creature using SpriteAtlasMaterial + SSBO pattern.
25x20 atlas (1050x640, 42x32 frames) built from per-direction strips.

5 animations across 4 directions (NE/NW/SE/SW):
idle (22f), walk (9f), burrow (25f), unburrow (13f), tunnel (5f).

- BadgerAtlasResources: shared material + SSBO
- BadgerMarker: patrol_step + direction + anim state
- Always-active creature (schedule=Always)
- Behavior: idle/sniffing, walk patrol, burrow/unburrow emotes
- Deterministic patrol seeds via creature_seed
- Day/night tinting via tint_badgers_for_daynight
@github-actions github-actions Bot changed the title Release: 1 feature, 1 chore → Main Release: 2 features, 1 fix, 1 chore → Main Apr 4, 2026
…le (#9657)

The $auth.flags field was never set — it stayed at 0 (LOADING) forever,
so hasAuthFlag(flags, STAFF) always returned false. Staff-only panels
(Grafana, ArgoCD, ClickHouse, ROWS, VMs) were permanently hidden even
for staff users.

Add fetchStaffFlags() to the session handler — calls the Supabase
staff_permissions RPC and sets AuthPresets.STAFF on $auth.flags when
the user has permissions. Also set initial AuthPresets.USER flags on
login so the auth state is correct from the start.
@github-actions github-actions Bot changed the title Release: 2 features, 1 fix, 1 chore → Main Release: 2 features, 2 fixes, 1 chore → Main Apr 4, 2026
h0lybyte added 2 commits April 4, 2026 18:31
* feat(isometric): off-thread behavior trees for generic creatures

Add deterministic behavior tree system evaluated via bevy_tasker:
- BehaviorNode enum (Sequence, Selector, Chance, conditions, actions)
- WorldSnapshot captured on main thread, eval dispatched off-thread
- CreatureBrain component with async channel dispatch/poll
- CreatureIntent consumed by animate system (replaces probability rolls)
- Legacy BehaviorProfile fallback for creatures without trees
- Boar tree: flee player < 5u, 40% wander, 60% idle

Deterministic via patrol_seed — same seed produces same decisions
on all clients, enabling future networked corrections-only model.

* feat(isometric): adaptive physics LOD for generic creatures

Add distance-based physics component management:
- PhysicsLod component with Ghost/Sensor/Kinematic tiers
- update_physics_lod system (runs every 0.5s, not per-frame)
- Ghost (> 16u): no physics, pure visual
- Sensor (8-16u): Collider capsule + Sensor for detection
- Kinematic (< 8u): RigidBody::Kinematic + Collider for collision
- Components added/removed dynamically via Commands
- Boar configured with capsule(r=0.5, h=0.8)

* feat(isometric): PlayerProximity component for reactive behavior trees

- Add PlayerProximity component (distance + direction to nearest player)
- Updated by physics_lod system (already measures distance, now caches it)
- Brain dispatch reads PlayerProximity instead of re-querying all players
- Enables PlayerNearby/PlayerFar behavior tree conditions
- Boar will flee when player approaches within 5 units (tree-driven)

* feat(isometric): networked creature state events for multiplayer sync

Add CreatureAttackRequest (client → server) and CreatureStateEvent
(server → all clients) messages to lightyear protocol:
- CreatureEventKind: TakeDamage, Die, ForceFlee, Captured
- Client handler overrides local deterministic intent with server corrections
- TakeDamage → force flee, Die → idle forever, ForceFlee → directional flee
- Enables multiplayer creature interactions: Client C attacks boar,
  Clients A and B see it react identically
…nently (#9659)

The cron trigger had desiredReplicas: 0 during a 1-hour window with
idleReplicaCount: 0 — meaning replicas were always zero (no trigger to
scale up existed). Fix: set desiredReplicas: 1 during business hours
(Mon-Fri 06:00-22:00 UTC), idle to 0 outside that window.
@github-actions github-actions Bot changed the title Release: 2 features, 2 fixes, 1 chore → Main Release: 3 features, 3 fixes, 1 chore → Main Apr 4, 2026
h0lybyte added 2 commits April 4, 2026 18:32
…system (#9660)

Phase 0: Remove loot toast emission from React useInventory hook —
the Bevy toast.rs already fires on LootEvent, so JS was duplicating
every loot notification. Removed prevItemsRef tracking, gameEvents
import, and ITEM_NAMES map from useInventory.tsx.

Phase 1: Rewrite toast.rs with pooled severity-styled notifications:
- ToastSeverity enum (Info/Success/Warning/Error/Loot) with
  per-severity accent colors and display durations
- Pre-allocated pool of 5 toast slots spawned at startup —
  show/hide via Visibility instead of spawn/despawn
- Panel styling: dark background, colored left stripe, rounded corners
- Positioned top-right (matching React toast layout)
- Pending queue when all slots are occupied
- Fade-out animation on panel, text, and stripe simultaneously
- Toast colors added to ui_color.rs palette (TOAST_INFO through
  TOAST_LOOT, TOAST_BG)
…s-shard queries (#9661)

Dashboard showed 0 logs because logs_raw used MergeTree on a 2-shard cluster —
queries only hit the local shard. Switch to ReplicatedMergeTree for intra-shard
replication, add logs_distributed (Distributed engine) for cross-shard fan-out,
and update the edge function + UI labels to query logs_distributed.
@github-actions github-actions Bot changed the title Release: 3 features, 3 fixes, 1 chore → Main Release: 3 features, 5 fixes, 1 chore → Main Apr 4, 2026
@h0lybyte h0lybyte merged commit e163837 into main Apr 4, 2026
4 checks passed
@github-project-automation github-project-automation Bot moved this from Review to Done in KBVE Apr 4, 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