Skip to content

Releases: jasona/gameweaver

v1.9.6

Choose a tag to compare

@jasona jasona released this 24 Feb 14:38

What's New

Pluggable Persistence Adapter

  • New PersistenceAdapter interface decouples storage from the filesystem
  • FilesystemAdapter (default) preserves all existing behavior with atomic writes and backups
  • SupabaseAdapter stores data in PostgreSQL with Supabase Storage for images
  • New data efuns: saveData, loadData, dataExists, deleteData, listDataKeys
  • All 11 daemons migrated from efuns.readFile/writeFile to the new data efuns
  • Configure via PERSISTENCE_ADAPTER=filesystem|supabase environment variable

Prompt Template System

  • Centralized, customizable prompt templates for all AI features
  • Templates support {{variable}} substitution and {{#if}} conditional blocks
  • New Prompts Daemon wraps the driver's PromptManager for mudlib access
  • New prompts admin command to list, view, edit, and reset templates
  • AI commands (aidescribe, airoom, ainpc, ailore) refactored to use prompts.render()

Configurable Game Theme

  • New game.theme config setting (default: "fantasy")
  • Automatically injected as {{gameTheme}} into all 22+ prompt templates
  • Change genre across all AI content with config game.theme cyberpunk

AI Worldbuilding (ailore command)

  • ailore bootstrap <name> [desc] — generates one lore entry per category (8 total) with progress streaming
  • ailore expand <category> [theme] — generates 2-4 entries in a specific category
  • ailore fullstory — weaves all lore into a long-form narrative saved as world:fullstory
  • lore clear subcommand to remove all lore entries with confirmation

Graceful Shutdown

  • SIGINT/SIGTERM now saves all active players before exiting
  • Configurable timeout via SHUTDOWN_TIMEOUT_MS (default 15s)

Documentation

  • Streamlined root README with feature highlights and link to full docs
  • New docs/README.md table of contents organizing all 65+ doc files
  • Updated commands.md, daemons.md, ai-integration.md, lore-system.md, deployment.md
  • New persistence-adapter.md with full adapter pattern documentation
  • Expanded environment variables reference in deployment guide

Full Changelog

v1.9.5...v1.9.6

v1.9.4

Choose a tag to compare

@jasona jasona released this 17 Feb 12:19
eea8170

Highlights

This release improves early profession gameplay and fixes multiple gathering interaction issues.

Gameplay Improvements

  • Improved gathering flow across mining, herbalism, fishing, logging, and skinning.
  • Updated profession checks/messages so failed actions are clearer and progression-gated correctly.
  • Added beginner-friendly traversal practice content for movement-based professions.

Content Additions

  • Added profession starter support content, including access to starting tools.
  • Added/updated profession station placement in appropriate town locations.
  • Expanded related world content to support profession onboarding and progression.

Fixes

  • Fixed gather/mine/skin command matching issues that blocked valid actions.
  • Fixed resource/material handling issues that caused incorrect item behavior and presentation.
  • Fixed several profession/resource node interaction edge cases.

v1.9.2

Choose a tag to compare

@jasona jasona released this 14 Feb 03:28

Post-release Hotfix (2026-02-14)

  • fixed Coolify/production startup failure where the driver could not resolve mudlib imports like /app/mudlib/std/object.js from mudlib/master.ts
  • updated runtime start command to execute the built driver via tsx (tsx dist/driver/index.js) so mudlib TypeScript module resolution works correctly in deployment
  • moved tag v1.9.2 to include this hotfix commit on main (8348f87)

MudForge v1.9.2 Release Overview

v1.9.2 focuses on gameplay progression polish, release quality hardening, and operational signal-to-noise improvements. This release ships new profession gathering routes in-world, improves guild progression linkage, and tightens platform reliability with logging and protocol safeguards.

Highlights

Professions and World Content

  • Added moderate-density profession resource nodes across thematic Valdoria locations:
    • forest routes for mining, herbalism, logging, and fishing progression
    • dungeon corridor early mining support
    • harbor high-tier coastal fishing access
  • This expands practical gather loops for solo progression and improves profession route continuity.

Progression Improvements

  • Successful guild skill usage now awards guild XP, improving alignment between active skill play and guild advancement pacing.

Reliability and Operations

  • Fixed heartbeat delay logging to measure per-tick scheduling delay instead of cumulative drift.
  • Reduced reset daemon log spam while preserving useful periodic/meaningful reset telemetry.
  • Hardened image payload normalization and protocol size handling for safer client/server message flow.

Client, Protocol, and Documentation

  • Added/updated protocol and system documentation for easier onboarding and maintenance:
    • core gameplay/lifecycle documentation
    • server-to-client GUI protocol documentation
  • Included lint/TypeScript cleanup so CI npm run lint checks pass consistently.

Release Management

  • Bumped game version metadata to 1.9.2 using scripts/bump-version.js.

Included Commits Since v1.9.1

  • d3ad530 Bump game version to 1.9.2
  • 1edba7d Fix lint configuration and cleanup TypeScript warnings
  • c12faed Add profession resource nodes to thematic Valdoria rooms
  • a0655f3 Award guild XP from successful guild skill usage
  • 95b7cfc Fix heartbeat delay logging and reduce reset log spam
  • ffc47c8 Harden v2.0 release readiness across security, reliability, and operations
  • 00d18cf Document core gameplay and lifecycle systems for new adopters
  • 4ff297d Document server-to-client GUI protocol messages
  • f3996b1 Harden image payload normalization and protocol size guards
  • dbb2e0d Auto-add NPC name tokens as IDs
  • 83fedd3 Fix remove command map handling for GUI unequip

Verification

  • CI lint gate fixed and passing (npm run lint)
  • TypeScript checks passing (npm run typecheck)
  • Manual verification performed for added resource-node room initialization paths

v1.9

Choose a tag to compare

@jasona jasona released this 11 Feb 22:27
3ca4d0a

What's Changed

New Features

  • First-run setup wizard and admin setup command
  • Newbie tutorial system ("The Conscription") — guided war camp walkthrough teaching basic commands
  • Reconnection GUI overlay replacing terminal text spam
  • Loading spinners for equipment slots, GIF panel, and GUI images
  • Indexed item selection for look, eat, drink, wear, wield, open, close, equip, remove (e.g., look sword 2)
  • Queue-based equipment image loading (one-by-one per heartbeat)
  • Propagated configured game values throughout codebase

Bug Fixes

  • Room onEnter/onLeave lifecycle hooks now fire correctly from direction commands (game-wide fix)
  • Corpse decay timers now actually start (were never being called)
  • Bury command supports indexed selection (bury corpse 2) and bury all
  • Train command restored (was shadowed by advance command alias)
  • NPC name generation in area builder fixed for merchant/trainer/petMerchant subclasses
  • Dead NPCs no longer block targeting of live ones after kill
  • Flee/wimpy shows direction name instead of array index
  • Score modal updates live while healing (sitting/sleeping)
  • Ferry schedule resilient to async errors
  • Equipment images load correctly when browser tab is hidden
  • Graphical launcher reloads properly on reconnect

Full Changelog: v1.8...v1.9

v1.8

Choose a tag to compare

@jasona jasona released this 09 Feb 20:03

What's Changed

  • Refactored core dependency cycles and added audit gates with CI workflow
  • Implemented type-safety audit remediations across mudlib and driver
  • Fixed equipment image streaming and avatar/equipment fallback rendering
  • Enforced mudlib sandbox boundaries and permission layering
  • Fixed sound backlog when browser tab is hidden
  • Updated bump-version script to show current version when no arg supplied
  • Fixed package-lock.json sync with package.json (missing @openai/codex)

Full Changelog: v1.7.27...v1.8

v1.7.26

Choose a tag to compare

@jasona jasona released this 08 Feb 01:51
bf3b73d

What's New

  • World map modal: Click "W" in the map panel to open a fullscreen modal compositing all explored areas with cross-area connections and area labels
  • Login fix: Map, stats, and equipment data now sent immediately on login
  • Quest panel: Fills remaining right sidebar space properly

v1.7.25

Choose a tag to compare

@jasona jasona released this 07 Feb 22:33
a7c71d4

What's New

  • Day/night cycle: Accelerated in-game time (1 real hour = 24 game hours) with outdoor room lighting
  • Sky panel widget: SVG sky scene in right sidebar with sun/moon arcs, animated gradients, and stars
  • Command fix: Resolve command name collisions using player's command paths

v1.7.24

Choose a tag to compare

@jasona jasona released this 07 Feb 04:33
b65b507

Bug Fixes

  • Fix race condition in SharedWorker verification causing random disconnects
  • Fix equipment sidebar not updating from delta stats messages
  • Fix dead NPCs not being removed from room immediately on death

Features

  • Add concurrency control to image generation and parallelize modal image fetching
  • Add builder heal command to fully restore target HP and MP
  • Add users command for quick online player list

Refactoring

  • Centralize duplicated utilities (capitalize, findItem, parseArgs, type guards) across mudlib, reducing ~350 lines of redundant code
  • Add type marker efuns (isWeapon, isArmor, isVehicle, isPet, isPlayer, isNPC) following the isLiving pattern
  • Move isLiving to efun and remove local definitions
  • Extract unequipIfNeeded and parseArgs to shared utility modules

v1.7.23

Choose a tag to compare

@jasona jasona released this 06 Feb 03:27
c9fa946

Protocol routing and STATS delta compression

E-3: Centralize Protocol Routing

  • Moved TIME_ACK and VISIBILITY handling from connection layer into driver's onPlayerInput()
  • All protocol message dispatch now centralized in one method
  • Added setTabVisible() and sendTimePong() public methods on Connection

E-4: STATS Delta Compression

  • Server tracks last-sent stats and sends only changed fields as type: 'delta'
  • Full snapshot every 10th send; deltas in between
  • No message sent when nothing changed (idle players)
  • ~92% bandwidth reduction for combat HP/MP updates, 100% for idle

v1.7.22

Choose a tag to compare

@jasona jasona released this 06 Feb 00:08
c6820fe

WebSocket Resilience & Efficiency

Resilience

  • Fix SharedWorker crash recovery bug that prevented reconnection when worker died while appearing connected
  • Remove hard cap on reconnect attempts — indefinite retry with exponential backoff up to 5 min
  • Add sleep/wake drift detection in SharedWorker for faster recovery after laptop lid close/open
  • Add mobile visibility-based stale connection detection (non-SharedWorker path)
  • Align session token TTL with runtime disconnect timeout configuration

Efficiency

  • Extract shared protocol parser — eliminates ~300 lines of duplicated parsing code across two client files
  • Create shared protocol type definitions used by both server and client (single source of truth)
  • Enable perMessageDeflate WebSocket compression (60-80% reduction for JSON messages >128 bytes)
  • Standardize VISIBILITY prefix to use \x00[VISIBILITY] like all other protocol messages

Bandwidth

  • Separate equipment images from STATS messages (~500KB/min savings per player)
  • Send combat portraits only once per target, not every round (~100KB/round savings)