ConsoleStdinHeeler
Non-blocking STDIN console input and native server management commands for Valheim dedicated servers.Changelog
All notable changes to ConsoleStdinHeeler will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.2.1] - 2026-10-23
Fixed
- Added startup environment verification to disable the mod immediately with a warning when launched on an interactive game client... because I am an idiot who was confused by my own choice to install on a client.
[1.2.0] - 2026-10-19
Changed
- Migrated build pipeline to compile-time publicized game assemblies via Jötunn prebuild task (
DoPrebuild.propsand build-onlyJotunnLib). - Replace reflection (
FieldInfoonTerminal.commandsandMethodInfoonZNet.SendNetTime) with direct member access. - Remove Hexium publish target and tooling.
- Simplified singleton and config null checks.
[1.1.3] - 2026-10-09
Fixed
- Fixing Nexus Mods Publishing
[1.1.2] - 2026-10-08
Fixed
- Restored bundled CHANGELOG.md inside release distribution archive.
- Removed debug .pdb symbol files from release distribution archive.
[1.1.1] - 2026-10-08
Changed
- Centralized build and release automation tooling to shared
DW.ValheimModTools. - Added support for automated Nexus Mods packaging and publishing.
[1.1.0] - 2026-10-08
Added
- Persistent center-screen announcements via optional
-t <seconds>flag forannounce,broadcast, andalertcommands (capped at 60s), refreshed every 1.0s via a non-blocking coroutine to eliminate banner fading. - Announcement cancellation support (
announce cancel/announce abort) to immediately terminate active announcement pulses. - Updated dedicated server
helpcatalog and documentation for-tflag and cancellation syntax.
[1.0.2] - 2026-10-02
Added
- Silent mode flag (
-s) to thespawncommand to suppress the in-game UI notification banner on targeted player clients. - Updated command reference documentation and dedicated server
helpcatalog forspawnsyntax.
[1.0.1] - 2026-09-26
Fixed
- Corrected project repository and website URLs across package metadata, manifest, and assembly info.
- Revised documentation and changelog formatting.
[1.0.0] - 2026-09-25
Added
- Initial Release of ConsoleStdinHeeler.
- Non-Blocking STDIN Console Architecture:
- Background reader thread (
ConsoleStdinHeeler_Reader) readingConsole.ReadLine()without blocking the Unity main thread. - Three-strike consecutive EOF detection automatically terminating the reader thread when the input stream closes (e.g. systemd without interactive TTY or detached Docker containers), preventing CPU spin loops.
- Thread-safe command queue (
ConcurrentQueue<string>) drained sequentially on the Unity main thread duringUpdate(). - Defensive execution wrapping command dispatches in exception handlers to prevent unhandled errors from interrupting the server loop.
- Background reader thread (
- Dedicated Server Management Commands:
save: Triggers an immediate synchronous save of world data and player profiles.shutdown/stop/exit/quit: Saves world state and initiates graceful server termination, supporting optional countdown delays in minutes with custom broadcast reasons and cancellation (stop cancel).players/list: Displays connected players, character names, IP endpoints, round-trip ping latency, and peer IDs.kick/ban/unban/banned: Dedicated player moderation commands supporting player name, IP, Steam ID, and PlayFab ID matching.kickall: Saves world data, displays an announcement banner, and disconnects all connected players after a configurable delay (default: 3 seconds) with custom kick messages.
- In-Game Broadcasts & Remote Administration:
say: Sends top-left notification banners to all players (@allor*) or a targeted individual viaZRoutedRpc.announce/broadcast/alert: Displays center-screen announcement banners to all players or a targeted player viaZRoutedRpc.tp/teleport: Teleports a connected player to another player's position or to world coordinates (x,y,z), with target position validation and client UI feedback.spawn: Server-side prefab and creature spawning near players or coordinates with optional quantity and star level parameters.event/stopevent/randomevent: Server-side raid event triggering, termination, and random triggering.tod/skiptime/sleep: World time of day adjustment, skipping forward in seconds, and sleeping to morning with network synchronization across all clients.- Dynamic
@randomplayer targeting for commands accepting player targets (tp,say,announce,spawn,event).
- Command Routing & Mod Compatibility:
- Automatic passthrough of unrecognized commands to Valheim's central
Terminal.commandsregistry, enabling terminal execution for mods like WorldEditCommands, ServerDevcommands, and InfinityHammer. - Automatic
Terminal.m_cheatelevation during command dispatch, allowing administrative and developer commands to execute on dedicated servers. - Server command filter intercepting client-only commands (emotes, rendering settings, local player cheats) with clear warnings instead of throwing exceptions.
- Curated
helpcommand listing dedicated server commands, installed mod commands, and native utilities, withhelp allproviding an unfiltered catalog.
- Automatic passthrough of unrecognized commands to Valheim's central
- Rich-Text ANSI Terminal Translation:
- Conversion of Unity
<color=...>tags into terminal ANSI color escape sequences with configurable display modes (Ansi,Strip,Raw). - Configurable console prompt prefix (default:
>) displayed in server logs when commands are received.
- Conversion of Unity
