Conversation
…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>
Contributor
Author
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Snapshot WarningsEnsure 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 FilesNone |
* 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
…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.
* 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.
…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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release: Dev → Main
10 atomic commits ready for main
Features
578ecd2)588a1ab)59e0330)Bug Fixes
a104a1b)b3c61e9)02a3949)66bc624)eef29b5)Chores
48ea543)Other Changes
226b7e1)This PR is automatically maintained by CI — KBVE Studio