# Changelog All notable changes to this project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] ### Added - Separate gameplay floor and structure layers, with buildable/removable floors and windows. Marked painted Tiled tiles become stateful gameplay entities; removing floors exposes the map's configurable default terrain. - A bundled Tiled extension to convert painted gameplay tiles into editable objects, preserving properties and flips with conflict checks and undo support. - Admin `export [FILE]` and `import [FILE]` commands for editable Tiled snapshots of terrain, buildings and ground items, including health, script variables, machine contents and processing state. Imports replace the map while preserving characters. - Native chat text editing with word navigation, keyboard/mouse selection, system clipboard copy/cut/paste, bounded sent-message history and role-aware command completion. - Persistent-world station game with singleplayer, hosting (`--host`) and joining (`--connect`), plus a dedicated `game-server`. - Data-driven items, recipes, buildings and skills in `assets/data/*.rsn`. - Rune scripting for item use, building interaction and crafting hooks. - Tiled map support (solid tiles/layers; `spawn`, `building` and `item` objects). - Saving of the world and characters (autosave, and on exit, Ctrl-C or SIGTERM). - Crafting, construction/deconstruction, skills, hunger, health and respawning. - Windows client builds for GitHub and Gitea CI; release builds run without a console window. - `cargo xtask pack` builds the client and server and packs them with their assets into a distributable archive; CI publishes these archives. - Machines (`machines` in data files): buildings with input/output slots that process their own timed recipes, with optional custom window layouts and background images. The furnace is now a machine (ore + log fuel), and a new assembler makes tools. - GitHub `Package` workflow builds archives for Windows (zip), Linux and macOS (tar.gz). - Worlds are stored with sqlx in SQLite (default) or PostgreSQL, keyed by a world UUID so many worlds can share one database. Singleplayer saves are SQLite files in the platform data directory. Autosaves run in the background. The server has new `--database URL` and `--world NAME|UUID` options. - The dedicated server is configured by `server.toml` plus command-line overrides, and it accepts terminal commands for save, shutdown and live config changes. - Start menu with new game (optionally hosted), load/delete saved games and join server screens. Running the client without options shows it. - Menus and HUD are defined by layout files in `assets/ui/` (rsn) with a shared theme, `{binding}` placeholders, conditional visibility and tooltips. - Machine windows: insert and take items from machine slots, using the machine's slot positions and background image, with a progress bar. - Chat (Enter/T) with `/` commands, a pause menu (Esc) and clickable inventory, crafting and build menus. - Server passwords, admins, a whitelist, bans, kicks and admin commands in the server terminal and in-game chat. Changes are written to the config file. The player hosting a world is always admin. - The client profile (`client.toml`) stores a player id; characters belong to it instead of to a name. ### Changed - Tiled exports always use the `.tmx` extension and separate floors, structures, ground items and spawn points into named object layers, with a reserved wiring/plumbing layer. The Tiled converter uses the same layer organization. - Tiled property overrides apply to new-world seeds as well as imported maps. Terrain is persisted with world state and replicated to connected clients. Save databases migrate automatically to schema version 2. - Characters move freely instead of tile by tile: diagonal movement, sliding along walls and around corners. Their exact position is saved. - **Breaking:** network protocol version 6. Layered building state and authoritative terrain are replicated, logins carry a player id and password, and movement is sent as a direction vector, so older clients and servers can't connect. Characters saved by name in existing worlds are not carried over to player ids. ### Removed - The rsn save file format and the `--save FILE` server option. Existing rsn saves are not migrated.