Skip to content

Release: 10 features, 3 fixes, 1 refactor, 2 chores → Main#7848

Merged
h0lybyte merged 16 commits intomainfrom
dev
Mar 10, 2026
Merged

Release: 10 features, 3 fixes, 1 refactor, 2 chores → Main#7848
h0lybyte merged 16 commits intomainfrom
dev

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Mar 10, 2026

Release: Dev → Main

16 atomic commits ready for main

Features

Bug Fixes

Refactoring

Chores


This PR is automatically maintained by CI — KBVE Studio

Runs every 6 hours in kube-system. Cleans up stale pods across all
namespaces to prevent hitting the 110 pod limit on a single-node cluster:
- Succeeded (Completed) pods older than 1 hour
- Failed pods older than 6 hours
- ImagePullBackOff pods older than 6 hours

Follows existing hardening patterns (pinned image, security context,
minimal RBAC, activeDeadlineSeconds, ttlSecondsAfterFinished).
* feat(isometric): detailed trees, procedural flora atlas, pixel density system

- Fixed pixel density: lock camera to 32px/unit grid (PIXEL_DENSITY=32),
  constant PIXEL_STEP=1/32 for camera snap, vegetation, and flower sizing
- Procedural flora atlas: 10 species (poppy, daisy, lavender, bell,
  wildflower, sunflower, rose, cornflower, allium, blue orchid) generated
  from 16x16 pixel masks + color palettes at startup, no external assets
- UV-mapped billboard card flowers (MC-style crossed X planes) with
  alpha-masked atlas material, pass-through (no colliders)
- Multi-tone tree trunks: 4-shade bark palette with per-face lighting
  (sun-facing highlights, shadow sides, root darkening)
- Root flare: bottom 20% of trunk wider with darkest bark
- Branch stubs: 2-4 sheared cuboids per tree in upper trunk zone
- 4-tier canopy shading: deep shadow → dark → light → bright highlights
- Canopy blobs for all 5 tree presets (was only deciduous)
- Shadow pockets: dark depth cuboids inside bushy/oak/round canopies
- Vegetation pixel-grid quantization (VEG_SNAP=1/32)

* feat(isometric): cluster-volume canopy with asymmetric lobe system, per-tree tilt, and scene color grading

Replace single-dome canopy with multi-lobe cluster system: big main
dome + 3-5 asymmetric edge bumps that overlap the rim to break
circular silhouettes. Bumps cluster toward a random heavy side per
tree for lopsided organic shapes. Add per-tree ±5° tilt, vertical
squash on lobes for leaf-cluster look, canopy Y jitter for height
variation, and 4-zone banded vertex colors (highlight/mid/body/shadow).
Update pixelate shader with warm highlight / cool shadow color grading,
lifted darks, and shadow desaturation.

* feat(isometric): tapered trunks, proportional canopies, crispy pixel shader

- Tapered two-section trunk with flared trapezoid base, buttress roots
  attached flush to trunk surface, bark ridges and per-height coloring
- Canopy anchored to trunk via base_frac (no floating), super-linear
  canopy spread so larger trees get proportionally wider canopies
- 5 distinct presets: conifer (narrow cone), tall (upright), bushy
  (wide), oak (broad), round (compact) with varied proportions
- Primary branch sub-canopies on large trees (size_scale > 1.5)
- Thicker limbs with size-scaled branch count for large trees
- Pixel shader tuning: stronger edge detection, punchier warm/cool
  color grade, midtone saturation boost, 5 toon bands, 6 color levels

* feat(isometric): bark texture system, camera zoom, shader breakup

- Add bark furrow breakup shader pass (vertical noise pattern on
  brown/grey pixels, binary dark/bright split without toon re-quantize)
- Add foliage leaf breakup shader pass (binary split with directional
  leaf noise for organic canopy texture)
- Add scroll wheel camera zoom (0.5x-2.0x, smooth interpolation)
- Rework trunk geometry: 6-sided prisms, flat-shaded faces with
  brightness-only variation (no hue shift), 3 vertical sections
- Widen bark palette contrast (darker darks, brighter highlights)
- Add scene color grading (warm highlights, cool shadows, lifted darks)
@github-actions
Copy link
Contributor Author

github-actions bot commented Mar 10, 2026

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 4 package(s) with unknown licenses.
See the Details below.

License Issues

.github/workflows/utils-publish-docker-image.yml

PackageVersionLicenseIssue Type
docker/login-action4.*.*NullUnknown License

apps/kbve/axum-kbve/Cargo.toml

PackageVersionLicenseIssue Type
futures-util>= 0.3.0, < 0.4.0NullUnknown License
rapier3d>= 0.32.0, < 0.33.0NullUnknown License

packages/rust/kbve/Cargo.toml

PackageVersionLicenseIssue Type
lru>= 0.16.0, < 0.17.0NullUnknown License

OpenSSF Scorecard

PackageVersionScoreDetails
actions/docker/login-action 4.*.* 🟢 6.8
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Security-Policy🟢 9security policy file detected
Maintained🟢 1020 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Fuzzing⚠️ 0project is not fuzzed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
License🟢 10license file detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration
Signed-Releases⚠️ -1no releases found
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
SAST🟢 9SAST tool detected but not run on all commits
cargo/glamx 0.1.3 🟢 3.3
Details
CheckScoreReason
Code-Review⚠️ 2Found 6/25 approved changesets -- score normalized to 2
Maintained⚠️ 01 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Security-Policy⚠️ 0security policy file not detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
cargo/parry3d 0.26.0 🟢 3.3
Details
CheckScoreReason
Code-Review⚠️ 2Found 6/25 approved changesets -- score normalized to 2
Maintained⚠️ 01 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Security-Policy⚠️ 0security policy file not detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
cargo/rapier3d 0.32.0 🟢 3.8
Details
CheckScoreReason
Maintained⚠️ 12 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1
Code-Review🟢 5Found 15/29 approved changesets -- score normalized to 5
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Binary-Artifacts🟢 10no binaries found in the repo
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Security-Policy⚠️ 0security policy file not detected
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
cargo/futures-util >= 0.3.0, < 0.4.0 UnknownUnknown
cargo/rapier3d >= 0.32.0, < 0.33.0 UnknownUnknown
cargo/lru >= 0.16.0, < 0.17.0 UnknownUnknown

Scanned Files

  • .github/workflows/utils-publish-docker-image.yml
  • Cargo.lock
  • apps/kbve/axum-kbve/Cargo.toml
  • packages/rust/kbve/Cargo.toml

@github-actions github-actions bot changed the title Release: 1 feature → Main Release: 2 features → Main Mar 10, 2026
h0lybyte added 2 commits March 9, 2026 22:58
* feat(isometric): WebGPU detection with fallback warning page

- Check navigator.gpu before loading game script
- Show styled warning card with supported browser list
- Only inject game script tag when WebGPU is available
- Include back-to-arcade link and WebGL2 fallback notice
- Bump axum-kbve 1.0.38 → 1.0.39

* build(isometric): rebuild WASM from latest dev with object labels and tree chop
)

When ArgoCD (or Grafana) returns a 5xx error, the proxy now wraps the
response in the standard {"error","reason","detail"} JSON format instead
of blindly relaying the upstream body. This fixes the dashboard showing
"Reason: unknown" because the frontend couldn't parse ArgoCD's raw error
response.
@github-actions github-actions bot changed the title Release: 2 features → Main Release: 3 features, 1 fix → Main Mar 10, 2026
* feat(isometric): procedural rock and ore system with dome-based geometry

Add rocks, boulders, and ore deposits as interactable world objects:
- New rocks.rs module with self-contained dome mesh generation
- 5 rock types: Boulder, Mossy Rock, Copper Ore, Iron Ore, Crystal Ore
- Squashed irregular domes with chunky wobble and overlapping bumps
- Stone color banding (highlight/mid/shadow) with per-rock hue jitter
- Ore veins rendered as accent-colored sub-domes on rock surface
- Full interaction pipeline: hover labels, click modals, sub-kind details
- RockKind enum in scene_objects.rs following FlowerArchetype pattern

* feat(isometric): pixel-art smoke shader with quantized UVs and cel-shading

* feat(isometric): add rock mining action with shake-crumble animation
@github-actions github-actions bot changed the title Release: 3 features, 1 fix → Main Release: 4 features, 1 fix → Main Mar 10, 2026
Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](docker/login-action@v3...v4)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@h0lybyte h0lybyte self-requested a review as a code owner March 10, 2026 04:09
@github-actions github-actions bot changed the title Release: 4 features, 1 fix → Main Release: 4 features, 1 fix, 1 chore → Main Mar 10, 2026
* feat(isometric): detailed trees, procedural flora atlas, pixel density system

- Fixed pixel density: lock camera to 32px/unit grid (PIXEL_DENSITY=32),
  constant PIXEL_STEP=1/32 for camera snap, vegetation, and flower sizing
- Procedural flora atlas: 10 species (poppy, daisy, lavender, bell,
  wildflower, sunflower, rose, cornflower, allium, blue orchid) generated
  from 16x16 pixel masks + color palettes at startup, no external assets
- UV-mapped billboard card flowers (MC-style crossed X planes) with
  alpha-masked atlas material, pass-through (no colliders)
- Multi-tone tree trunks: 4-shade bark palette with per-face lighting
  (sun-facing highlights, shadow sides, root darkening)
- Root flare: bottom 20% of trunk wider with darkest bark
- Branch stubs: 2-4 sheared cuboids per tree in upper trunk zone
- 4-tier canopy shading: deep shadow → dark → light → bright highlights
- Canopy blobs for all 5 tree presets (was only deciduous)
- Shadow pockets: dark depth cuboids inside bushy/oak/round canopies
- Vegetation pixel-grid quantization (VEG_SNAP=1/32)

* feat(isometric): cluster-volume canopy with asymmetric lobe system, per-tree tilt, and scene color grading

Replace single-dome canopy with multi-lobe cluster system: big main
dome + 3-5 asymmetric edge bumps that overlap the rim to break
circular silhouettes. Bumps cluster toward a random heavy side per
tree for lopsided organic shapes. Add per-tree ±5° tilt, vertical
squash on lobes for leaf-cluster look, canopy Y jitter for height
variation, and 4-zone banded vertex colors (highlight/mid/body/shadow).
Update pixelate shader with warm highlight / cool shadow color grading,
lifted darks, and shadow desaturation.

* feat(isometric): tapered trunks, proportional canopies, crispy pixel shader

- Tapered two-section trunk with flared trapezoid base, buttress roots
  attached flush to trunk surface, bark ridges and per-height coloring
- Canopy anchored to trunk via base_frac (no floating), super-linear
  canopy spread so larger trees get proportionally wider canopies
- 5 distinct presets: conifer (narrow cone), tall (upright), bushy
  (wide), oak (broad), round (compact) with varied proportions
- Primary branch sub-canopies on large trees (size_scale > 1.5)
- Thicker limbs with size-scaled branch count for large trees
- Pixel shader tuning: stronger edge detection, punchier warm/cool
  color grade, midtone saturation boost, 5 toon bands, 6 color levels

* feat(isometric): bark texture system, camera zoom, shader breakup

- Add bark furrow breakup shader pass (vertical noise pattern on
  brown/grey pixels, binary dark/bright split without toon re-quantize)
- Add foliage leaf breakup shader pass (binary split with directional
  leaf noise for organic canopy texture)
- Add scroll wheel camera zoom (0.5x-2.0x, smooth interpolation)
- Rework trunk geometry: 6-sided prisms, flat-shaded faces with
  brightness-only variation (no hue shift), 3 vertical sections
- Widen bark palette contrast (darker darks, brighter highlights)
- Add scene color grading (warm highlights, cool shadows, lifted darks)

* refactor(isometric): extract tree code from tilemap.rs into trees.rs module

Isolate all tree-related logic (bark palettes, trunk/branch/canopy geometry,
wind animation, occlusion system) into a dedicated trees.rs module, mirroring
the existing pattern used for flowers. Reduces tilemap.rs by ~1180 lines.
@github-actions github-actions bot changed the title Release: 4 features, 1 fix, 1 chore → Main Release: 4 features, 1 fix, 1 refactor, 1 chore → Main Mar 10, 2026
* feat(isometric): detailed trees, procedural flora atlas, pixel density system

- Fixed pixel density: lock camera to 32px/unit grid (PIXEL_DENSITY=32),
  constant PIXEL_STEP=1/32 for camera snap, vegetation, and flower sizing
- Procedural flora atlas: 10 species (poppy, daisy, lavender, bell,
  wildflower, sunflower, rose, cornflower, allium, blue orchid) generated
  from 16x16 pixel masks + color palettes at startup, no external assets
- UV-mapped billboard card flowers (MC-style crossed X planes) with
  alpha-masked atlas material, pass-through (no colliders)
- Multi-tone tree trunks: 4-shade bark palette with per-face lighting
  (sun-facing highlights, shadow sides, root darkening)
- Root flare: bottom 20% of trunk wider with darkest bark
- Branch stubs: 2-4 sheared cuboids per tree in upper trunk zone
- 4-tier canopy shading: deep shadow → dark → light → bright highlights
- Canopy blobs for all 5 tree presets (was only deciduous)
- Shadow pockets: dark depth cuboids inside bushy/oak/round canopies
- Vegetation pixel-grid quantization (VEG_SNAP=1/32)

* feat(isometric): cluster-volume canopy with asymmetric lobe system, per-tree tilt, and scene color grading

Replace single-dome canopy with multi-lobe cluster system: big main
dome + 3-5 asymmetric edge bumps that overlap the rim to break
circular silhouettes. Bumps cluster toward a random heavy side per
tree for lopsided organic shapes. Add per-tree ±5° tilt, vertical
squash on lobes for leaf-cluster look, canopy Y jitter for height
variation, and 4-zone banded vertex colors (highlight/mid/body/shadow).
Update pixelate shader with warm highlight / cool shadow color grading,
lifted darks, and shadow desaturation.

* feat(isometric): tapered trunks, proportional canopies, crispy pixel shader

- Tapered two-section trunk with flared trapezoid base, buttress roots
  attached flush to trunk surface, bark ridges and per-height coloring
- Canopy anchored to trunk via base_frac (no floating), super-linear
  canopy spread so larger trees get proportionally wider canopies
- 5 distinct presets: conifer (narrow cone), tall (upright), bushy
  (wide), oak (broad), round (compact) with varied proportions
- Primary branch sub-canopies on large trees (size_scale > 1.5)
- Thicker limbs with size-scaled branch count for large trees
- Pixel shader tuning: stronger edge detection, punchier warm/cool
  color grade, midtone saturation boost, 5 toon bands, 6 color levels

* feat(isometric): bark texture system, camera zoom, shader breakup

- Add bark furrow breakup shader pass (vertical noise pattern on
  brown/grey pixels, binary dark/bright split without toon re-quantize)
- Add foliage leaf breakup shader pass (binary split with directional
  leaf noise for organic canopy texture)
- Add scroll wheel camera zoom (0.5x-2.0x, smooth interpolation)
- Rework trunk geometry: 6-sided prisms, flat-shaded faces with
  brightness-only variation (no hue shift), 3 vertical sections
- Widen bark palette contrast (darker darks, brighter highlights)
- Add scene color grading (warm highlights, cool shadows, lifted darks)

* refactor(isometric): extract tree code from tilemap.rs into trees.rs module

Isolate all tree-related logic (bark palettes, trunk/branch/canopy geometry,
wind animation, occlusion system) into a dedicated trees.rs module, mirroring
the existing pattern used for flowers. Reduces tilemap.rs by ~1180 lines.

* feat(isometric): lit rock material for shadows and spawn overlap prevention

Rocks now use a dedicated lit PBR material (rock_body_mat) so they
receive dynamic shadows from trees and terrain. Spawn logic uses
priority-based exclusion (trees > rocks > flowers) to prevent objects
from overlapping on the same tile.
@github-actions github-actions bot changed the title Release: 4 features, 1 fix, 1 refactor, 1 chore → Main Release: 5 features, 1 fix, 1 refactor, 1 chore → Main Mar 10, 2026
* feat(isometric): inventory system with loot drops from tree chop and rock mining

* feat(isometric): collectible flowers, forageable mushrooms with procedural meshes
@github-actions github-actions bot changed the title Release: 5 features, 1 fix, 1 refactor, 1 chore → Main Release: 6 features, 1 fix, 1 refactor, 1 chore → Main Mar 10, 2026
…es (#7862)

Point Askama template paths to dist/askama/ instead of askama/ so profile
pages render with Starlight header, footer, and navigation chrome. The
Dockerfile already copies Astro build output to templates/dist/ at build
time; this change makes the Rust code reference those generated templates.

Also adds a copy step to the dev target so local development picks up the
Astro-generated templates before cargo compilation.
@github-actions github-actions bot changed the title Release: 6 features, 1 fix, 1 refactor, 1 chore → Main Release: 6 features, 2 fixes, 1 refactor, 1 chore → Main Mar 10, 2026
…ckerfile (#7864)

Revert Askama template paths to askama/ so lint/build works without a
full Astro build. Instead, the Dockerfile now overwrites the hand-written
templates with Astro-generated Starlight-wrapped versions before cargo
build, ensuring production images always use Starlight chrome.
…7863)

- Add rapier3d 0.32 and futures-util dependencies
- Create gameserver module with physics world (20Hz tick, -9.81 gravity)
- Add WebSocket handler at /ws/game with broadcast snapshot channel
- Wire GameServerState into AppState and bypass middleware for WS route
@github-actions github-actions bot changed the title Release: 6 features, 2 fixes, 1 refactor, 1 chore → Main Release: 7 features, 3 fixes, 1 refactor, 1 chore → Main Mar 10, 2026
… shadows (#7865)

Extracts weather system into weather.rs with day/night ambient color
cycling, per-object WindSway component, and BlobShadow system that
projects dynamic circular shadows beneath trees and rocks.
@github-actions github-actions bot changed the title Release: 7 features, 3 fixes, 1 refactor, 1 chore → Main Release: 8 features, 3 fixes, 1 refactor, 1 chore → Main Mar 10, 2026
Bevy 0.18 replaced EventReader/EventWriter with the observer pattern.
Migrated LootEvent to use commands.trigger() and app.add_observer(),
added missing flower archetype entries in UI, and deployed updated
WASM build to astro-kbve.
@github-actions github-actions bot changed the title Release: 8 features, 3 fixes, 1 refactor, 1 chore → Main Release: 10 features, 3 fixes, 1 refactor, 1 chore → Main Mar 10, 2026
@github-actions github-actions bot changed the title Release: 10 features, 3 fixes, 1 refactor, 1 chore → Main Release: 10 features, 3 fixes, 1 refactor, 2 chores → Main Mar 10, 2026
@h0lybyte h0lybyte merged commit 0035da7 into main Mar 10, 2026
14 checks passed
@github-project-automation github-project-automation bot moved this from Review to Done in KBVE Mar 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant