Skip to content

Release: 10 features, 5 fixes, 1 refactor, 6 chores → Main#9845

Merged
h0lybyte merged 23 commits intomainfrom
dev
Apr 9, 2026
Merged

Release: 10 features, 5 fixes, 1 refactor, 6 chores → Main#9845
h0lybyte merged 23 commits intomainfrom
dev

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

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

Release: Dev → Main

23 atomic commits ready for main

Features

Bug Fixes

Refactoring

Chores

Other Changes

  • fix|build(kbve): adjusting zod errors for the osrs items. (ad1069f)

This PR is automatically maintained by CI — KBVE Studio

…9843)

Extract OSRSPotionInfo and OSRSFoodInfo from OSRSItemPanel inline code
into dedicated components. Create 6 new sub-components for frontmatter
fields: OSRSAbout, OSRSItemDetails, OSRSPrayerInfo, OSRSGatheringInfo,
OSRSMarketStrategy, OSRSTradingTips.

Wire all 8 into OSRSItemPanel with conditional rendering via type guards.
Panel shrinks by 250 lines — all section rendering is now delegated.
OSRSItemDetails always renders (basic stats from existing frontmatter).
Other sections render conditionally when frontmatter data is present.
…6.1 (#9844)

* fix(mc): fix Docker build — sha1 checksums, Gradle 9, Fabric Loom 1.16.1

- Replace ADD --checksum=sha512 with curl + sha1sum (Docker only supports
  sha256 for ADD --checksum; Modrinth only provides sha1/sha512)
- Upgrade Fabric Loom 1.9-SNAPSHOT → 1.16.1 (required for 1.21.11 yarn
  mappings, fixes "Unsupported unpick version" error)
- Upgrade Gradle base image 8 → 9 (Loom 1.16.1 requires Gradle 9)
- Verified: local docker build succeeds, all 8 mod checksums pass,
  Rust cdylib + Gradle JAR bundle working

* feat(mc): add RCON-based e2e tests inside apps/mc

- RCON TCP client helper with auth + command execution
- Health spec: list players, check difficulty, get seed
- Global setup polls RCON until server is ready (180s timeout)
- e2e target in project.json spins up container, waits for RCON,
  runs vitest, captures logs, cleans up
@github-actions
Copy link
Copy Markdown
Contributor Author

github-actions Bot commented Apr 9, 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.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA ad1069f.
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.

License Issues

.github/workflows/utils-unreal-plugin-win-cicd.yml

PackageVersionLicenseIssue Type
actions/checkout6.*.*NullUnknown License
actions/download-artifact8.*.*NullUnknown License
actions/github-script8.*.*NullUnknown License
actions/upload-artifact7.*.*NullUnknown License

OpenSSF Scorecard

PackageVersionScoreDetails
actions/KikimoraGames/itch-publish 0.0.3 🟢 3
Details
CheckScoreReason
SAST⚠️ 0no SAST tool detected
Maintained⚠️ 00 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
Code-Review⚠️ 0Found 0/2 approved changesets -- score normalized to 0
Binary-Artifacts🟢 9binaries present in source code
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
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
actions/actions/checkout 6.*.* 🟢 6
Details
CheckScoreReason
Maintained⚠️ 23 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Packaging⚠️ -1packaging workflow not detected
Signed-Releases⚠️ -1no releases found
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Security-Policy🟢 9security policy file detected
Branch-Protection🟢 6branch protection is not maximal on development and all release branches
SAST🟢 8SAST tool detected but not run on all commits
actions/actions/download-artifact 8.*.* 🟢 6.1
Details
CheckScoreReason
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Maintained🟢 1025 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
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
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 10SAST tool is run on all commits
actions/actions/github-script 8.*.* 🟢 7.7
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained🟢 1013 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions🟢 9detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Pinned-Dependencies⚠️ 1dependency not pinned by hash detected -- score normalized to 1
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
SAST🟢 10SAST tool is run on all commits
actions/actions/upload-artifact 7.*.* 🟢 5.7
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained🟢 54 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 5
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 1dependency not pinned by hash detected -- score normalized to 1
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 10SAST tool is run on all commits

Scanned Files

  • .github/workflows/utils-unreal-plugin-win-cicd.yml

@github-actions github-actions Bot changed the title Release: 1 feature → Main Release: 1 feature, 1 fix → Main Apr 9, 2026
#9846)

* fix(firecracker-ctl): remount scratch as private propagation for jailer pivot_root

Kubernetes emptyDir mounts inherit shared propagation from the kubelet.
The jailer's pivot_root() syscall fails with EPERM on shared mounts.
Remount scratch dir as private during init_jailer() using the existing
CAP_SYS_ADMIN capability — avoids needing privileged: true.

* test(firecracker-ctl): add e2e test suite for REST API

Covers health, input validation, VM lifecycle (create/poll/destroy),
and concurrency limits. Tests are environment-aware — work both with
and without /dev/kvm (without KVM, validates routing and error handling).
@github-actions github-actions Bot changed the title Release: 1 feature, 1 fix → Main Release: 1 feature, 2 fixes → Main Apr 9, 2026
@github-actions github-actions Bot changed the title Release: 1 feature, 2 fixes → Main Release: 1 feature, 2 fixes, 1 chore → Main Apr 9, 2026
…2 starter overrides (#9848)

* feat(astro-kbve): add MDX versioning fields and migrate 2 items to v2 data-driven format

Add mdx_version (int32) and mdx_updated (string) to proto field 40-41
and OSRSExtendedSchema for tracking migration state per item.

Migrate yew-logs and 3rd-age-amulet to v2 format:
- Move about text, market strategy, trading tips into frontmatter
- Remove redundant markdown sections (Item Details, Equipment Info,
  Combat Stats, Fletching table, Related Items — all rendered from
  existing frontmatter by sub-components)
- MDX body shrinks from ~80 lines to 6 lines (panel + adsense)
- Tag both with mdx_version: 2, mdx_updated: 2026-04-09

* Revert "feat(astro-kbve): add MDX versioning fields and migrate 2 items to v2 data-driven format"

This reverts commit 31bd77f.

* feat(astro-kbve): add MDX versioning, v2 generator output, and migrate 2 overrides

Add mdx_version (field 40) and mdx_updated (field 41) to proto and Zod
schema for tracking migration state per item.

Update generate-osrs-items.mjs to output v2 body (panel + adsense only)
when override has mdx_version >= 2, otherwise legacy v1 markdown body.

Migrate yew-logs (_1515) and 3rd-age-amulet (_10344) overrides to v2:
- Move markdown body sections into frontmatter fields (about,
  market_strategy, trading_tips)
- Tag with mdx_version: 2, mdx_updated: 2026-04-09
- Override body becomes empty — generator produces slim v2 MDX
@github-actions github-actions Bot changed the title Release: 1 feature, 2 fixes, 1 chore → Main Release: 2 features, 2 fixes, 1 chore → Main Apr 9, 2026
nx affected --target=test was auto-detecting vitest.config.ts and
running e2e tests without a container. The e2e tests require the
explicit e2e target which handles container lifecycle. Adding a
noop test target prevents this.
@github-actions github-actions Bot changed the title Release: 2 features, 2 fixes, 1 chore → Main Release: 2 features, 3 fixes, 1 chore → Main Apr 9, 2026
h0lybyte added 2 commits April 9, 2026 03:37
…9841)

* feat(discordsh): wire proto loot tables and abilities into dungeon combat (#9838 task 1)

- Add `npc_ref` field to EnemyState for proto loot table lookup
- Add `roll_npc_loot()`, `roll_npc_gold()`, `npc_xp_reward()` in proto_bridge
  that read directly from NPC proto LootTable entries (item_ref, drop_rate, quantity, gold range)
- Add `proto_initial_intent()` that reads NPC abilities from proto (ability_to_intent mapper)
  with full fallback to legacy hardcoded intent table
- Wire proto loot into handle_enemy_deaths: try proto drops first, fall back to legacy roll_loot
- Proto gold per kill overrides random 5-15 when defined
- All 701 tests pass — zero-data NPCs still use legacy tables seamlessly
- Next: populate NPC MDX files with loot/ability data to activate proto path

* feat(discordsh): add dialogue trees, crafting system, and faction reputation (#9838 tasks 2,3,6)

Task 2 — NPC Dialogue Trees:
- Add ActiveDialogue type (npc_ref, npc_name, current_node_id) on SessionState
- Add DialogueTalk(node_id) GameAction + dlg route in router.rs
- Add handle_dialogue_navigate() — walks proto DialogueTree nodes, renders text as logs
- Add proto_bridge::get_npc_dialogue_tree/get_dialogue_node/npc_has_dialogue lookups
- Phase-gated to City/Merchant rooms; ends automatically on leaf nodes

Task 3 — Crafting System:
- Add Craft(item_ref) GameAction + craft route in router.rs
- Add proto_bridge::available_recipes() — filters by inventory contents + skill level
- Add proto_bridge::execute_craft() — consumes ingredients, produces output, returns XP
- Add handle_craft() in logic.rs — grants foraging XP on successful craft
- Phase-gated to City/Merchant rooms
- Reads CraftingRecipe from itemdb.proto (ingredients, skill, skill_level, xp_reward)

Task 6 — Faction Reputation:
- Add faction_standing: HashMap<String,i32> to PlayerState (persisted via serde)
- Add proto_bridge faction helpers: npc_faction(), faction_price_modifier(), faction_tier_label()
- Define reputation tiers: Hostile(-50), Unfriendly(0), Neutral, Friendly(50), Honored(100)
- Merchant price modifier: -15% at Honored, +15% at Hostile

All features are proto-driven with zero data populated — they activate when NPC/item MDX
files get dialogue_tree, recipes, and faction fields added. Zero behavior change until then.
All 701 tests pass.

* feat(bevy_chat): scaffold IRC-backed chat crate for MUD cross-platform communication (#9838 task 7)

New crate: packages/rust/bevy/bevy_chat — headless async IRC client with optional Bevy plugin.

Core types:
- IrcConfig — server/port/TLS/nick/channels, from_env() for K8s deployment
- ChatMessage — structured message with MessageKind enum (Chat, Kill, RareDrop,
  Capture, QuestComplete, AreaUnlocked, Death, Craft, System, Custom)
- ChatClient — tokio async IRC client: connect(), send(), subscribe(),
  PING/PONG keepalive, auto-join channels, PRIVMSG parse with fallback

Wire format: [KIND] sender@platform: content {optional json payload}
- Roundtrip encode/decode via to_irc_privmsg() / from_irc_privmsg()
- Unstructured IRC messages fall back to plain Chat kind

Optional Bevy plugin (behind "plugin" feature):
- ChatPlugin — bridges crossbeam channels into ECS
- ChatInbox / ChatOutbox resources for systems to read/write
- IncomingChatEvent fired each frame from inbox drain
- Isometric game adds plugin; Discord bot uses ChatClient directly

Channel conventions:
- #global — player chat (both platforms)
- #world-events — kills, drops, captures, quest completions
- #dungeon — dungeon-specific session events

Added bevy_chat dependency to discordsh-bot Cargo.toml.
8 unit tests (message roundtrip, PRIVMSG parsing, self-echo filtering).
…d compat (#9851)

OSRSTeleportSchema.destinations now accepts both plain strings
("Edgeville") and objects ({ name: "Edgeville" }). Fixes build
failure on amulet-of-glory-6 where existing override used string
array format.
@github-actions github-actions Bot changed the title Release: 2 features, 3 fixes, 1 chore → Main Release: 3 features, 4 fixes, 1 chore → Main Apr 9, 2026
)

Add ForgejoSummary type, fetch function, atoms, and service card
showing repos, private, mirrors, open issues, and open PRs on the
dashboard home page (staff only).
@github-actions github-actions Bot changed the title Release: 3 features, 4 fixes, 1 chore → Main Release: 4 features, 4 fixes, 1 chore → Main Apr 9, 2026
…eld (#9853)

* fix(firecracker-ctl-e2e): expect 422 for missing required field

Axum returns 422 (not 400) when serde deserialization fails on a
missing required field. All 15 e2e tests now pass.

* test(firecracker-ctl-e2e): add mock firecracker for full execution tests

Mock replaces the real firecracker binary with a shell script that reads
the code drive and prints its content to stdout. Exercises the entire
firecracker-ctl pipeline (API → config gen → spawn → stdout capture →
cleanup) without requiring /dev/kvm.

Adds execution.spec.ts (6 tests): Node.js code, Python code, empty code
fallback, stdout capture, timeout handling, VM list tracking.

All 21 tests pass across 5 spec files.
@github-actions github-actions Bot changed the title Release: 4 features, 4 fixes, 1 chore → Main Release: 4 features, 5 fixes, 1 chore → Main Apr 9, 2026
…format (#9854)

Batch-migrate all override files using migrate-overrides-v2.mjs:
- Extract markdown body sections into frontmatter fields (about,
  market_strategy, trading_tips)
- Tag all overrides with mdx_version: 2, mdx_updated: 2026-04-09
- Override bodies cleared — generator produces slim v2 MDX output

1,919 files migrated, 2 already v2 (yew-logs, 3rd-age-amulet).
Net reduction: ~39K lines of redundant markdown removed.
@github-actions github-actions Bot changed the title Release: 4 features, 5 fixes, 1 chore → Main Release: 5 features, 5 fixes, 1 chore → Main Apr 9, 2026
#9855)

* chore(npcdb): populate 23 NPC MDX files with loot tables, abilities, and factions (#9850)

Adds proto-ready frontmatter to all combat NPCs:

Loot tables (per-level tier):
- Level 1 (slime): potion, rations, vitality-potion, whetstone | 3-8 gold | 15 XP
- Level 2 (skeleton): bandage, bomb, fire-flask, iron-skin-potion, trap-kit, whetstone | 5-12 gold | 30 XP
- Level 3 (wraith): ward, bomb, campfire-kit, rage-draught, phoenix-feather, antidote, smoke-bomb | 8-18 gold | 50 XP
- Level 5 (boss): ward, potion, bomb, teleport-rune, campfire-kit, phoenix-feather, elixir, smoke-bomb | 15-30 gold | 100 XP

Abilities (maps to proto_initial_intent):
- attack/heavy-attack/defend/charge/aoe-attack with exact damage values from legacy table
- poison (cave-spider, venomfang-lurker) and burn (ember-wisp) with duration

Factions (3 factions):
- crystal-order: glass-slime, crystal-bat, crystal-golem, glass-golem, glass-assassin, crumbling-statue
- shadow-court: shadow-wraith, shade-stalker, phantom-knight, void-walker, the-shattered-king
- deep-wardens: skeleton-guard, bone-archer, cursed-knight, stone-sentinel, corrupted-warden

Skipped: green-toad, meadow-firefly, woodland-butterfly (ambient, non-combat)
Skipped: wraith-executioner (no legacy data)

Proto paths in discordsh-bot activate after npcdb.json is regenerated via Astro build.

* chore(discordsh): add IRC env vars to K8s deployment for bevy_chat (#9850)

Adds IRC_HOST, IRC_PORT, IRC_NICK, IRC_CHANNELS env vars to the discordsh
StatefulSet, pointing at the existing ergo-irc-service in the irc namespace.

Nick: mud-discordsh
Channels: #global, #world-events, #dungeon

The bevy_chat ChatClient::from_env() reads these to connect on bot startup.
@github-actions github-actions Bot changed the title Release: 5 features, 5 fixes, 1 chore → Main Release: 5 features, 5 fixes, 2 chores → Main Apr 9, 2026
… RDP password injection (#9809) (#9856)

Add post-boot autologon Job that sets Windows registry keys through the
QEMU Guest Agent (virsh guest-exec), eliminating manual VNC password entry.
Update Guacamole deployment with init container that injects the RDP
password from the existing sealed secret at runtime.
@github-actions github-actions Bot changed the title Release: 5 features, 5 fixes, 2 chores → Main Release: 6 features, 5 fixes, 2 chores → Main Apr 9, 2026
)

Run generate-osrs-items.mjs against Wiki API with v2 override support.
1,513 items with v2 overrides produce slim MDX bodies (panel + adsense).
3,011 items without overrides produce legacy v1 markdown bodies.
Net reduction: ~26K lines as v2 items shed redundant markdown sections.
@github-actions github-actions Bot changed the title Release: 6 features, 5 fixes, 2 chores → Main Release: 6 features, 5 fixes, 3 chores → Main Apr 9, 2026
…ion (#9860)

Adds a `packages` field to CreateVmRequest that attaches a pre-built
pip wheel cache as an additional drive. The init job (v6) downloads
kbve + fudster wheels at deploy time, and the VM init script installs
them offline via `pip install --no-index` before running user code.

- firecracker-ctl: packages manifest (vdc) + pip-cache.ext4 (vdd) drives
- init job: builds pip-cache.ext4 with pre-downloaded wheels
- VM init script: mounts cache, runs pip install from local wheels
- e2e: packages.spec.ts (5 tests), updated mock to report drive attachment
- 26/26 e2e tests pass
@github-actions github-actions Bot changed the title Release: 6 features, 5 fixes, 3 chores → Main Release: 7 features, 5 fixes, 3 chores → Main Apr 9, 2026
Bring back the MC service from git history (removed in #9362):
- /api/v1/mc/players — RCON-polled player list with Mojang profile
  enrichment (UUID + skin URL), 15s refresh, DashMap cached
- /api/v1/mc/textures/{hash} — reverse proxy for textures.minecraft.net
  skin PNGs, 24h immutable cache

These endpoints are required by McSkinViewer.tsx and McPlayerList.tsx
which are still active in the frontend. Service is optional — only
initializes when MC_RCON_HOST is set.
@github-actions github-actions Bot changed the title Release: 7 features, 5 fixes, 3 chores → Main Release: 8 features, 5 fixes, 3 chores → Main Apr 9, 2026
… lines (#9850) (#9863)

Adds recipes frontmatter to craftable items using existing raw materials.
All recipes use items already in the itemdb so both games can craft them.

Alchemy (6): potion, antidote, vitality-potion, iron-skin-potion, rage-draught, elixir
Cooking (5): rations, garlic-bread, spicy-ramen, fried-fish-taco, lobster-soup
Smithing (4): leather-vest, rusty-sword, iron-mace, chain-mail
Crafting (8): bandage, campfire-kit, bomb, whetstone, fire-flask, trap-kit, ward, smoke-bomb

Proto paths activate after itemdb.json is regenerated via Astro build.
@github-actions github-actions Bot changed the title Release: 8 features, 5 fixes, 3 chores → Main Release: 8 features, 5 fixes, 4 chores → Main Apr 9, 2026
…ource of truth (#9861)

* refactor(astro-kbve): remove override system — MDX files are single source of truth

Delete data/osrs-overrides/ directory (1,922 files) — all curated content
is now in the generated MDX frontmatter.

Delete migrate-overrides-v2.mjs — migration is complete.

Rewrite generate-osrs-items.mjs as bootstrap-only tool:
- Creates MDX for NEW items only (skips existing files)
- All new items start as v2 (slim body, panel + adsense)
- Existing MDX files are never overwritten
- Use --force flag to regenerate all (destructive)

* fix(astro-kbve): use ID-based matching in generator to protect SEO slugs

Generator now indexes existing MDX files by osrs.id frontmatter field
instead of filename matching. Existing slugs are never changed or
overwritten. New items get slug from name, with collision avoidance
against all existing slugs.

* fix(astro-kbve): replace --force with --audit, generator never overwrites

Remove destructive --force flag entirely. Generator only creates new
items and never overwrites existing files under any circumstance.

Add --audit flag for read-only inspection:
- Reports new items that would be created
- Flags items where Wiki name differs from existing slug (SEO preserved)
- Writes nothing to disk
@github-actions github-actions Bot changed the title Release: 8 features, 5 fixes, 4 chores → Main Release: 8 features, 5 fixes, 1 refactor, 4 chores → Main Apr 9, 2026
h0lybyte added 2 commits April 9, 2026 05:20
…9862)

Rebuilds pip-cache.ext4 every Sunday 04:00 UTC with latest kbve +
fudster wheels. Uses atomic mv to prevent partial reads during swap.
Reuses rootfs-init network policy label for PyPI egress access.
@github-actions github-actions Bot changed the title Release: 8 features, 5 fixes, 1 refactor, 4 chores → Main Release: 9 features, 5 fixes, 1 refactor, 5 chores → Main Apr 9, 2026
…workflow, KBVEROWS wiring (#9809) (#9864)

Add utils-unreal-plugin-win-cicd.yml for native Windows UE5 plugin builds
on the KubeVirt VM runner (UE5-Win). Add runner install/update Job that
manages the GitHub Actions agent via QEMU Guest Agent + file-server proxy.
Wire KBVEROWS into ci-publish.yml as unreal-win64 package type with
version.toml tracking.
@h0lybyte h0lybyte self-requested a review as a code owner April 9, 2026 09:22
@github-actions github-actions Bot changed the title Release: 9 features, 5 fixes, 1 refactor, 5 chores → Main Release: 10 features, 5 fixes, 1 refactor, 5 chores → Main Apr 9, 2026
@github-actions github-actions Bot changed the title Release: 10 features, 5 fixes, 1 refactor, 5 chores → Main Release: 10 features, 5 fixes, 1 refactor, 6 chores → Main Apr 9, 2026
@h0lybyte h0lybyte merged commit bda1bb4 into main Apr 9, 2026
9 checks passed
@github-project-automation github-project-automation Bot moved this from Review to Done in KBVE Apr 9, 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