Skip to content

Release: 2 features, 4 fixes, 1 doc, 1 refactor, 3 chores → Main#9441

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

Release: 2 features, 4 fixes, 1 doc, 1 refactor, 3 chores → Main#9441
h0lybyte merged 11 commits intomainfrom
dev

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

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

Release: Dev → Main

11 atomic commits ready for main

Features

Bug Fixes

Documentation

  • docs(journal): syncing the zed entries. (d52af63)

Refactoring

Chores

  • chore(rust): updating the cargo lock. (acc4ac9)
  • chore(rust): updating the cargo lock again. (dc4dc9c)
  • chore(api): updating the kbve deployment to v0.1.83 (93319a1)

This PR is automatically maintained by CI — KBVE Studio

@github-actions
Copy link
Copy Markdown
Contributor Author

github-actions Bot commented Apr 1, 2026

Dependency Review

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

Snapshot Warnings

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

  • apps/discordsh/axum-discordsh/Cargo.toml

@github-actions github-actions Bot changed the title Release: 1 chore → Main Release: 2 chores → Main Apr 1, 2026
h0lybyte added 3 commits April 1, 2026 11:00
…race (#9444)

The previous ApplyDeferred approach was placed after BufferToLink (too
late) due to schedule cycle constraints. Replace with an exclusive
system that calls world.flush() before LinkSystems::Receive.

This forces all pending deferred commands (including AeronetLinkOf
inserts from the on_connection observer) to apply before the receive
system tries to drain Session.recv into Link.recv. Exclusive systems
can be ordered against parent sets without causing cycles.
nx run isometric:run            — local server (default ws://127.0.0.1:5000)
nx run isometric:run:production — production server (wss://kbve.com/ws)
* fix(dashboard): handle empty response from KubeVirt start/stop/restart

KubeVirt subresource API returns empty body on success (200 with no
content). The apiFetch helper called resp.json() unconditionally,
which threw "The string did not match the expected pattern" (browser
JSON parse error on empty string).

Fix: read as text first, only parse JSON if non-empty. Returns
empty object for void responses.

* fix(dashboard): install @novnc/novnc + guacamole-common-js

VNC and Guacamole viewer components dynamically import these
packages but they were never installed. Adds:
- @novnc/novnc ^1.6.0 — noVNC WebSocket VNC client
- guacamole-common-js ^1.5.0 — Apache Guacamole JS client
@github-actions github-actions Bot changed the title Release: 2 chores → Main Release: 1 feature, 2 fixes, 2 chores → Main Apr 1, 2026
h0lybyte added 2 commits April 1, 2026 11:23
…ic HTTPS (#9445)

The dedicated https-game-chuckrpg listener with hostname filter was
claiming game.chuckrpg.com at the Envoy level, preventing the HTTP
listener (port 80) from routing ACME HTTP-01 challenges for that
domain. cert-manager's solver HTTPRoute attached correctly but Envoy
returned 404 because the hostname was owned by the HTTPS listener.

Fix: remove the dedicated listener and add all chuckrpg certs
(chuckrpg-tls, chuckrpg-api-tls, game-chuckrpg-tls) as certificate
refs on the generic HTTPS listener. Envoy uses SNI to select the
correct cert — no hostname filter needed.

This establishes the pattern for all future domains: no per-domain
HTTPS listeners, just add the cert ref to the generic listener.

Post-merge:
  kubectl delete challenge -n chuckrpg --all
  kubectl delete order -n chuckrpg --all
@github-actions github-actions Bot changed the title Release: 1 feature, 2 fixes, 2 chores → Main Release: 1 feature, 3 fixes, 1 doc, 2 chores → Main Apr 1, 2026
h0lybyte added 2 commits April 1, 2026 11:24
…#9446)

* fix(dashboard): map VMI Succeeded/Failed phase to Stopped

KubeVirt VMI lingers in Succeeded phase after clean shutdown.
getPhase() returned raw VMI phase which isn't in the VMPhase union,
causing the UI to show no action buttons (no Start after first run).

Fix: cast raw API phase to string, map Succeeded/Failed → Stopped
and Pending/Scheduling → Starting before returning VMPhase.

* feat(dashboard): add bitmask VM state for composable UI decisions

Replace string-based phase matching with bitmask flags:
- VMState.CAN_START, CAN_STOP, CAN_RESTART, CAN_CONNECT, etc.
- phaseToState() maps every KubeVirt phase to flags
- stateToPhase() resolves back to display label
- VMInfo.state field for components to check capabilities

Handles all edge cases: Succeeded, Failed, Pending, Scheduling,
CrashLoopBackOff, ErrorUnschedulable, WaitingForVolumeBinding.

UI usage: if (info.state & VMState.CAN_START) showStartButton();
@github-actions github-actions Bot changed the title Release: 1 feature, 3 fixes, 1 doc, 2 chores → Main Release: 1 feature, 4 fixes, 1 doc, 3 chores → Main Apr 1, 2026
New kasmService.ts alongside vmService.ts:
- Discovers KASM deployments in kasm namespace via K8s API proxy
- Tracks workspace state: replicas, VPN status, image, port
- Uses same bitmask pattern as VMState (KasmState.CAN_START, etc.)
- Start/Stop via Deployment scale (replicas 0/1)
- Auto-refresh every 15s
- Detects Gluetun VPN sidecar status

Ready to wire into AstroVMDashboard.astro as a KASM section.
@github-actions github-actions Bot changed the title Release: 1 feature, 4 fixes, 1 doc, 3 chores → Main Release: 2 features, 4 fixes, 1 doc, 3 chores → Main Apr 1, 2026
…deploy bot in shared namespace (#9448)

Strip all Discord bot code from axum-discordsh (34 source files, 3 data
files, 11 templates). Remove poise, serenity, bevy_*, dashmap, and 8
other bot-only deps. Slim main.rs to HTTP-only, state.rs to 4 fields.

Move discordsh-bot deployment into discordsh namespace to share existing
secrets (Redis, Supabase). Remove separate discordsh-bot namespace and
ArgoCD app. Both pods (HTTP + bot) now live side-by-side in discordsh.

Both crates compile independently with zero errors.

Closes #9286 Phase 3C
@h0lybyte h0lybyte self-requested a review as a code owner April 1, 2026 15:33
@github-actions github-actions Bot changed the title Release: 2 features, 4 fixes, 1 doc, 3 chores → Main Release: 2 features, 4 fixes, 1 doc, 1 refactor, 3 chores → Main Apr 1, 2026
@h0lybyte h0lybyte merged commit e5e2234 into main Apr 1, 2026
5 checks passed
@github-project-automation github-project-automation Bot moved this from Review to Done in KBVE Apr 1, 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