## Bug Fixes
### Log Entries Lost on App Exit
`Logger.Shutdown()` previously called `Channel.Writer.Complete()` but never awaited the background drain task. Any log messages still queued when the app closed were silently dropped. The drain task is now stored at construction and `Shutdown()` waits up to 5 seconds for it to flush before the process exits — no more missing tail entries in session logs.
### Spawn Deduplication Guard Was Always Silent
`SpawnDataService.AddBoxSpawn()` contained a `List.Contains()` check intended to prevent duplicate entries. Because deserialized `BoxSpawnEntity` objects are never the same object reference, this check always returned `false` and was effectively dead code. The guard has been removed; entities are now added directly.
---
## ⚡ Performance
### Map Images Preloaded at Startup
Previously, the first time you opened a Box Spawn, Region Spawn, or Vendor Spawn page after launch, the editor had to read multi-megabyte BMP files from disk, convert them to base64, and inject them into the canvas — all synchronously on first render. Depending on map size, this could produce a noticeable delay or blank canvas flash.
**Now:** During the background startup sequence (Step 13.5, after map files are verified and before the DataWatcher starts), all available map images are loaded and cached via `MapImageCacheService`. By the time the app signals ready, every map is already in memory. All three spawn-page components get instant cache hits on first render.
### Settings Chance Properties Now Cached
`TimedChance`, `CommonChance`, `UnCommonChance`, and `RareChance` previously called `Preferences.Get()` on every single read. They now follow the same cached backing-field pattern already used by `BoxColor`, `BoxLineSize`, `ScriptsCustomFolder`, and other settings — loaded once at startup, returned from a nullable field on every subsequent read.
### Map Preload Is Non-Blocking
`MapImageCacheService.PreloadMaps()` has been renamed to `PreloadMapsAsync()` and now wraps each map load in `await Task.Run()`. The multi-MB disk reads and base64 conversions happen on thread pool threads, leaving the UI thread free during startup.
---
## Improvements
### `ActiveAccount` Setter No Longer Blocks
Setting the active account triggered a synchronous `SaveToFolder()` file write inside the property setter — including at startup when the previously active account is restored. This is now handled by a background helper (`SaveAccountTimestampInBackground`) that dispatches to a thread-pool task with proper error logging. The setter returns immediately.
# UORespawn v2.0.1.3 — Release Notes
**Released: March 9, 2026**
**Platform: Windows · macOS (Desktop Only)**
**Requires: .NET 10 Runtime**
---
## What's New
### ModernUO (MUO) Server Support
UORespawn now officially supports **ModernUO** alongside ServUO. A new server type toggle in the Settings → Server Integration card lets you switch between the two. All folder path hints, placeholders, and help text update automatically to match the selected server:
| | ServUO | ModernUO |
|---|---|---|
| Scripts | `Scripts/Custom/` | `Projects/UOContent/Custom/` |
| Data | `Data/` | `Distribution/Data/` |
### Two-Path Server Linking
Server linking has been split into two independent folder pickers:
- **Custom Scripts Folder** — where server scripts are installed
- **Server Data Folder** — where `UORespawn/` data exchange files live
This replaces the old single-folder model and gives much more precise control, especially for non-standard server layouts and MUO installs.
### Broken Link Detection & Auto-Repair
If your linked server folder moves (drive remount, path change, etc.), the editor now detects it and shows an amber **Broken Link** button. Clicking it attempts an automatic repair by searching parent directories for the `UORespawnServer/` folder. If found, linking is restored instantly. If not found, stored paths are cleared cleanly so you can re-link from scratch — no more silent failures.
### Animated Splash Intro
A randomly selected intro video (1 of 4) now plays on first launch, fading seamlessly into the app. A new **film icon** button in the nav bar lets you enable or disable the animation at any time — the setting persists across launches.
### Box Spawn Editor — Draw Improvements
- **Edge-Pan During Draw** — Drawing a spawn box near a canvas edge now automatically pans the map, so you can create boxes larger than the viewport without releasing the mouse
- **Cursor Confinement (Windows)** — While drawing, the mouse cursor is physically locked to the canvas using the Win32 API, preventing accidental click-outs mid-draw
### One-Click Publish (`Publish.cmd`)
A double-clickable `Publish.cmd` file has been added to the solution root. Open PowerShell, run the full publish pipeline, and package the release — no terminal setup required.
---
## Changes & Improvements
### Server Integration Card — Redesign
- Single active-server toggle button (click to switch between ServUO and MUO)
- Goldenrod accent color used throughout the active-server section for a more refined look
- **"Local Link"** section renamed to **"Local Server"**
- Script and Data folder pickers grouped inside a shaded sub-container for clarity
- **Manual Transfer** moved into its own independent collapsible section at the bottom
- Remote (FTP) section is now exclusively for FTP/Sync configuration
- Status feedback simplified to short, direct confirmations (`✓ Scripts installed.` / `✓ Server linked.`)
- Cleaner connection toggle with inset track depth in dark mode
### FTP Remote — Two-Path Configuration
FTP now requires two separate remote paths:
- **Remote Custom Scripts Path** — the server's `Custom/` scripts folder
- **Remote Data Exchange Path** — the server's `Data/` parent folder
Auto-detect remote path has been removed; paths are entered manually for full control.
### Tile Spawn — Trigger Indicators
Weather and Timed trigger icons are now displayed in a dedicated row directly below the frequency buttons, making them larger and easier to read at a glance.
### Region Names
Region names in the editor are now capped at **25 characters** to prevent UI overflow in the map overlay.
### Publish Script (`publish-windows.ps1`)
The version string is now read automatically from `Utility.cs` via regex — no more manual version edits before publishing. ZIP output is named `UORespawn-vX.X.X.X.zip` matching the full 4-part version.
---
## Bug Fixes
### Box Spawn Editor
- **Invisible boxes at map origin** — Spawn boxes positioned at coordinate `x=0` or `y=0` were silently not rendering. A falsy check was treating numeric zero as missing data. Fixed with nullish coalescing so zero is treated as a valid coordinate
- **Mini-map not updating during edge-pan** — The mini-map viewport rectangle was frozen while edge-pan was active during box drawing. Fixed with a 50ms polling timer that pushes live pan position to the mini-map throughout the draw session
- **Mouse escaping canvas during draw** — Pointer events could escape the canvas while drawing, breaking the in-progress box. Fixed by switching to `pointermove` with coordinate clamping to canvas bounds
### Server Integration Light Theme
All Server Integration card elements are now fully styled for light mode — connection toggle, folder sections, type button, manual transfer section, and status messages all properly contrast against the light background.
### Documentation Errata
`README.md` incorrectly listed `[EditBox`, `[EditRegion`, `[EditTile`, and `[EditVendor` as in-game editing commands — **these commands do not exist**. The correct workflow is `[UORespawn` → **Edit Spawn** → target the ground, shop sign, or beehive. Corrected to match the Instructions page.
### UI Polish
- **Mini-map collapse button** — Restored the hamburger (☰) icon for the mini-map toggle button. The chevron icon that replaced it was invisible in dark mode due to a missing CSS rule. The hamburger icon has correct white (dark mode) and dark (light mode) SVG definitions
- **Back-to-top button** — Removed the outer dark ring from the back-to-top button on Settings and Instructions pages. The golden circle icon now sits directly in the glow for a cleaner, flat appearance
---
## Internal Quality Improvements
These changes are invisible to end users but improve stability and maintainability:
- **Thread Safety** — `UpdateChecker` static cache now protected by a dedicated `Lock`; concurrent update checks no longer risk a data race on cached results
- **Async Load Locking** — `MapListUtility` and `TileListUtility` now use `SemaphoreSlim` with double-check pattern (matching `VendorListUtility`) to guard against concurrent initial loads
- **Image Cache Locking** — `TileImageUtility._imageCache` is now protected by a `Lock`; reads and writes are thread-safe with file I/O kept outside the lock
- **Self-Maintaining Progress Count** — `BackgroundDataLoader.TotalSteps` is now derived from an explicit `_trackedStepNames` array instead of a hardcoded constant. Adding or removing a load step requires only one code change and the progress bar stays accurate automatically
- **DataWatcher Precision** — `_onDataChanged` callback now only fires when a recognised file type is processed; unrecognised file changes are logged and ignored rather than triggering a spurious reload
- **Debug Panel** — `LoadExistingLogEntries()` now correctly fires `OnLogEntry` to refresh the UI instead of the no-op `OnLogCleared` event (which had zero subscribers)
- **Map Image Cache** — Removed per-hit `Logger.Info` call that was flooding the debug log during normal map pan and zoom operations
- **Dead Code Removed** — `BoxSpawnEntity.UpdatePriority()` removed (unreachable; contained incorrect logic). Stale development comment in `BoxSpawnComponent.SaveCategoryModal` replaced with a proper warning log
- **Code Cleanup** — Five unused named variables replaced with discards (`_`) in `BinarySerializationService` read methods; dead null-check guards removed from `Settings.ToggleBestiaryFavorite` and `Settings.ToggleVendorFavorite`; indentation corrected in `SignDataUtility`, `HiveDataUtility`, and `RegionListUtility`
---
## Instructions Page Updates
- **Section 2** — Map Controls list updated with edge-pan auto-pan and OS cursor confinement entries
- **Section 10** — Fully rewritten to cover server type selection (ServUO vs MUO), two-path local linking, broken link detection & auto-repair, side-by-side folder structure diagrams, and updated two-path FTP flow
- **Header** — Now mentions both ServUO and ModernUO support
- **Getting Started** — Server type selection added as explicit step 2; folder references generalised from "ServUO folder" to "server folder"
- **What's New section** — Updated with all v2.0.1.3 additions
---
## ⬆️ Upgrading from v2.0.1.2
> Your existing spawn data, pack files, and settings are preserved across updates.
1. Download `UORespawn-v2.0.1.3.zip` from the [Releases page](https://github.com/Kita72/UORespawnProject/releases)
2. Extract to your preferred location (replace the existing installation)
3. Launch the app — settings migrate automatically
4. If you were previously linked to a server:
- Go to **Settings → Server Integration**
- Re-select your server type (ServUO or MUO)
- Pick your **Custom Scripts Folder** and **Server Data Folder** separately using the new two-path pickers
- Click **Link** to reconnect
---
## Downloads
| Platform | File |
|----------|------|
| Windows (x64) | `UORespawn-v2.0.1.3.zip` |
---
*For the full technical changelog see [CHANGELOG.md](CHANGELOG.md)*
*Questions or issues? Visit the [ServUO Community](https://www.servuo.dev) or open an issue on [GitHub](https://github.com/Kita72/UORespawnProject/issues)*
# UORespawn v2.0.1.2 Release Notes
**Release Date:** March 6, 2026
**Platform:** Windows, macOS
**Framework:** .NET 10 MAUI with Blazor
---
## What's New
### Official App Badge
Show your support! UORespawn now includes an official badge you can display on your server website or documentation.
- **Easy Download** - Click the badge in the navigation menu to save it
- **Windows** - Opens folder picker to choose save location
- **macOS** - Saves directly to Downloads folder
- **Full Quality** - Uncompressed PNG for best display
### New In-Game Commands
Two new commands for quick spawn management without opening gumps:
| Command | Description | Access |
|---------|-------------|--------|
| `[UORAdd` | Add Staff to system| GameMaster+ |
| `[UORDrop` | Remove Staff from system | GameMaster+ |
---
## Documentation Updates
### Section 12: In-Game Editing (Complete Rewrite)
The instructions for in-game editing have been completely rewritten to accurately document the actual workflow:
1. Open Control Panel with `[UORespawn`
2. Click **Edit Spawn** button to get target cursor
3. Target ground, signs, beehives, or items
4. Edit spawns directly in the gump interface
5. Save changes
### Updated Command Documentation
- **[ShowRespawn]** - Now works as a toggle (call once to enable call-outs, again to disable)
- Settings defaults synced with server values
---
## ️ Removed
### MaxRecycleTotal Setting
This setting has been removed from the editor. The server now automatically calculates the optimal recycle total based on active player count, providing better performance without manual tuning.
---
## Technical Changes
- Badge container positioned in nav-footer for consistent bottom-aligned layout
- Windows folder picker integration for badge saving
- Cleaned up incorrect documentation references
---
## Installation
### Fresh Install
1. Download the release ZIP for your platform
2. Extract to your desired location
3. Run `UORespawnApp.exe` (Windows) or `UORespawnApp.app` (macOS)
### Upgrade from v2.0.1.1
1. Close the existing UORespawn Editor
2. Replace the application files with the new version
3. Your spawn data and settings are preserved in the Data folder
---
## Links
- **GitHub:** [UORespawnProject](https://github.com/Kita72/UORespawnProject)
- **Documentation:** See Instructions page in the app
- **Support:** Open an issue on GitHub
---
## Thank You
Thank you for using UORespawn! Your feedback helps make this tool better for the entire ServUO community.
*Happy spawning!*
# UORespawn v2.0.1.1 Release Notes
**Release Date:** March 05, 2026
**Type:** Minor Update
---
## Highlights
This update adds the highly requested **XML Spawner Edit** functionality, reorganizes the Settings page for better usability, and fixes light theme visibility issues.
---
## ✨ What's New
### XML Spawner Editing
- **Press ENTER to Edit** - Hover over any XML spawner on the map and press ENTER to open the edit modal
- **Full CRUD Support** - Add creatures from the bestiary, remove existing entries, adjust HomeRange and MaxCount
- **Side-by-Side Layout** - Bestiary list on the left, current spawn entries on the right
- **Favorites Support** - Quick access to your starred creatures
- **Updated Tooltips** - Map tooltips now show both "Press ENTER to edit" and "Press DEL to delete"
### Documentation
- **[ShowRespawn] Command** - Added documentation to the Instructions page Debug Mode section
- Shows all spawnable creatures at your current location in-game
---
## Improvements
### Settings Page Reorganization
- **Unified Server Integration Card** - Local Link, FTP Sync, and Manual Export options now consolidated into a single organized component
- **Local/Remote Toggle** - Clean selection between local server linking and remote server options
- **Removed Separate FTP Card** - FTP settings now integrated into the Server Integration section
### Tooltip Corrections
Fixed several incorrect tooltips on the Settings page:
- **Scale Spawn** - Now correctly describes minimum scale factor for spawned creatures
- **Extra Patrons** - Renamed from "Extra Townsfolk" with accurate description
- **Town Spawn** - Fixed to describe spawning town creatures within boundaries
- **Grave Spawn** - Fixed to describe spawning undead near cemetery areas
---
## Bug Fixes
### Light Theme Button Visibility
- **Import Button** - Now visible in light mode on the Spawn Packs page
- **Modal Buttons** - All `btn-outline-light` buttons now have proper contrast in both themes
- Uses dark text and medium border in light mode for proper visibility
---
## Technical Details
### New Components
- `EditXmlSpawnerModal.razor` - Full-featured XML spawner editing modal
- `ServerIntegrationCard.razor` - Unified server connection management
### Removed Components
- `FtpSettingsCard.razor` - Functionality moved to ServerIntegrationCard
### CSS Updates
- Light theme overrides for button visibility in `SpawnPacksComponent.razor.css`
---
## Upgrade Notes
This is a minor update with no breaking changes. Simply replace your existing installation with the new version.
**Recommended:** If you have a linked ServUO server, the editor will continue to sync automatically.
---
Thank you for using UORespawn! Your feedback drives these improvements.
# UORespawn v2.0.1.0 Release Notes
**Release Date:** Mar 04, 2026
---
## Highlights
This release focuses on **architecture modernization** with a new Dependency Injection (DI) services layer, comprehensive **thread safety improvements**, and **UI polish** including a new trigger dashboard and improved navigation.
---
## ✨ New Features
### Dependency Injection Architecture
The codebase now uses proper DI services for cleaner architecture and better testability:
| Service | Purpose |
|---------|---------|
| **SpawnDataService** | Centralized spawn data management with thread-safe operations |
| **SessionService** | DI-injectable session with map image caching |
| **MapImageCacheService** | LRU cache for map images (max 6 maps, lazy loading) |
> **Backward Compatible**: Existing code using `Utility.BoxSpawns` etc. continues to work - it now delegates to the new services automatically.
### Thread Safety Improvements
All critical operations are now properly synchronized:
- **Session**: Protected MapId, LinkedServerPath, ServerMode with .NET 9+ Lock
- **DataWatcher**: Thread-safe file monitoring start/stop
- **SpawnDataService**: All spawn dictionary operations protected
### File Operations
New `FileUtility` class provides robust file operations:
- Retry logic (3 attempts with 100ms delays)
- Handles transient file locks gracefully
- Proper exception handling and logging
### Trigger Dashboard
TileSpawnComponent now shows active triggers visually:
- **Weather icon** (☁️) when IsWeather is enabled
- **Time icon** () when IsTimed is enabled
- Subtle dashboard that appears only when triggers are active
---
## UI/UX Improvements
### Navigation Reordered
The NavMenu is now organized more logically:
1. **Spawn Packs** (top - quick access)
2. **Spawn Section** (Box, Tile, Region, Vendor)
3. **Settings**
4. **Instructions**
5. **Theme Toggle**
### Map Selector Moved
- Map selector **moved from NavMenu to page headers**
- Now appears directly in Box, Region, and Vendor spawn editors
- Cleaner navigation without map-specific controls
### Icon Updates
| Page | New Icon | Old Icon |
|------|----------|----------|
| Box Spawns | `bi-bounding-box` | `bi-box` |
| Tile Spawns | `bi-grid-3x3-gap` | `bi-geo-alt` |
### Styling Fixes
- **Tile name color**: Blue (#6ea8fe) in frequency card header
- **NavMenu spacing**: Proper gap between active pack and nav items
- **CSS warning fixed**: Removed invalid `crisp-edges` value
---
## Technical Details
### New Services (DI Singletons)
```
MauiProgram.cs:
├── SpawnDataService (spawn dictionaries)
├── SessionService (session + map caching)
└── MapImageCacheService (base64 image cache)
```
### New Files
| File | Purpose |
|------|---------|
| `SpawnDataService.cs` | Thread-safe spawn data management |
| `SessionService.cs` | DI-injectable session wrapper |
| `MapImageCacheService.cs` | LRU map image caching |
| `FileUtility.cs` | Retry-enabled file operations |
| `ViewportConstants.cs` | Centralized viewport dimensions (800×600) |
| `FrequencyButtonsComponent.razor` | Reusable frequency selector |
### Architecture Pattern
```
Components → Utility (static) → DI Services
↓ ↓
Backward Compatible Thread-Safe
```
The delegation pattern allows gradual migration to full DI while maintaining backward compatibility.
---
## Full Changelog
See [CHANGELOG.md](../CHANGELOG.md) for complete details.
---
## Upgrade Instructions
1. Download `UORespawn-v2.0.1.0.zip`
2. Extract and replace your existing UORespawn application
3. Your settings and spawn packs will be preserved
4. If linked to a server, the editor will prompt to update server files if needed
---
## Highlights
This release introduces **XML Spawner Management** directly from the map editor, along with a comprehensive **Light/Dark Theme Polish** pass that ensures consistent theming across all components.
---
## ✨ New Features
### XML Spawner Management
You can now **add and delete XML spawners** directly from the Box Spawn and Region Spawn map editors!
#### Add XML Spawner
- **Right-click** on the map to open the "Add XML Spawner" option
- **Side-by-side modal** with bestiary browser (left) and selected spawns (right)
- **HomeRange slider** (10-250) to set spawn radius
- **MaxCount slider** (1-100) to set maximum creatures
- **Favorites support** for quick access to frequently-used creatures
- Click creatures to instantly add them to your spawner
#### Delete XML Spawner
- **Right-click on an existing spawner** (green circle) to delete it
- **Confirmation modal** shows spawner details before removal
- Immediate server sync for real-time deletion
---
## UI/UX Improvements
### Complete Light/Dark Theme Polish
Every component now properly responds to theme changes:
| Component | Improvements |
|-----------|-------------|
| **MiniMap** | Header, body, and icons now theme-aware |
| **Spawn Packs** | Stats tiles, modals, toggle buttons themed |
| **Vendor Spawn** | List items, location markers, search inputs |
| **Box/Region Lists** | Spawn items, hover states, text colors |
### Navigation & Branding
- **Logo = Home** - Click the logo to navigate home (Home button removed)
- **More Nav Space** - Freed up a slot for future features
- **Better Light Mode** - Brand area uses softer gray (#3a3a3a)
- **Bigger Logo** - Maximized to fill the brand area (5.5rem)
- **Centered Logo** - Fixed off-center alignment issue
---
## Technical Details
### New Components
- `AddXmlSpawnerModal.razor` - Side-by-side creature picker with sliders
- `DeleteXmlSpawnerModal.razor` - Confirmation dialog for spawner removal
- `XmlSpawnerCommandService` - Handles server communication for XML spawners
### Theme Updates
- Light theme CSS added to 5+ component stylesheets
- Centralized theme utilities in `app.css`
- SVG icons with theme-appropriate fill colors
- Removed unused Home icon CSS definitions
---
## Tips
- **XML Spawners**: Great for adding spawners in specific locations without editing spawn boxes
- **Theme Toggle**: Use the Dark/Light Mode button at the bottom of the nav menu
- **Favorites**: Star frequently-used creatures in the bestiary for faster access
- **Trigger Dashboard**: Look for weather/time icons when editing tile spawns with triggers enabled
- **Map Selector**: Now in the page header - easier access while editing
- **Performance**: Map image caching means faster switching between maps
---
## ️ For Developers
If you're extending UORespawn:
- **Prefer DI injection** over `Utility` static access in new code
- **SpawnDataService** is the source of truth for spawn data
- **SessionService** manages the current editing session
- All services are **thread-safe** - safe to use from any context
---
**Thank you for using UORespawn!**
# UORespawn v2.0.0.9 Release Notes
**Release Date:** March 2026
**Platform:** Windows, macOS
**Framework:** .NET 10 MAUI with Blazor
---
## FTP Remote Server Integration
Connect to your ServUO server remotely without needing local file access!
- **Push to Server** - Upload spawn data (.bin files) to your remote server
- **Pull from Server** - Download bestiary, regions, and spawner data
- **Auto-Detect Path** - One-click detection of your server's `Data/UORespawn/` folder
- **Progress Tracking** - Real-time file-by-file transfer status
- **Cancel Anytime** - Stop long-running transfers with the cancel button
### Three Ways to Sync
| Method | Best For |
|--------|----------|
| **Link Local** | ServUO on same machine - automatic sync |
| **FTP Remote** | ServUO on remote/VPS server |
| **Manual Export** | Full control, custom workflows |
---
## ️ Security-First Account System
Your credentials, your control.
- **No Passwords Required** - App accounts are just friendly names
- **User-Controlled Storage** - FTP credentials stored in YOUR folder, not the app
- **Zero Cloud Dependency** - No external servers, no account databases
- **Delete Folder = Data Gone** - Full control over your sensitive data
---
## Under the Hood
### ErrorHandler Utility
- Centralized error handling across the application
- `TryExecute()` / `TryExecuteAsync()` for safe operation wrappers
- User-friendly error messages
### ConfigurationValidator
- Automatic folder creation on startup
- Server link validation
- Diagnostic summary for troubleshooting
### Cancellation Token Support
- All FTP operations support cancellation
- Graceful handling of interrupted transfers
---
## UI/UX Improvements
- **Scroll-to-Top Button** - Golden glowing button on Settings page
- **Page Scroll Reset** - Settings and Instructions pages scroll to top on navigation
- **FTP Settings Card** - New card for account and credential management
- **FTP Sync Modal** - Progress modal with file status and cancel button
---
## Bug Fixes
- Fixed StackOverflowException when setting up FTP credentials
- Fixed FTP card centering to match other Settings cards
- Fixed UpdateChecker HttpClient headers (set once, not every call)
- Fixed DataWatcher namespace (now correctly in Services)
---
## Documentation
- Comprehensive FTP documentation added to Instructions page (Section 9)
- Step-by-step account setup guide
- Auto-detect path feature explanation
- Pull/Push sync button documentation
---
## Installation
### Upgrade from v2.0.0.8
1. Download and extract the new release
2. Your existing `Data/` folder and spawn packs are preserved
3. Launch and enjoy the new FTP features!
### Fresh Install
1. Download the release for your platform
2. Extract and run the application
3. DefaultPack loads automatically on first launch
4. Configure server integration in Settings
---
## Links
- [Full Changelog](CHANGELOG.md)
- [Documentation](README.md)
- [GitHub Repository](https://github.com/Kita72/UORespawnProject)
---
**Thank you for using UORespawn!**
# UORespawn v2.0.0.8 Release Notes
> **Release Date:** March 2026
> **Platform:** Windows, macOS
> **Framework:** .NET 10 MAUI Blazor Hybrid
---
## In-Game Spawn Editing
The headline feature of v2.0.0.8 - edit spawns directly from within your game!
| Command | Description |
|---------|-------------|
| `[EditBox` | Target a creature → Opens its box spawn in the editor |
| `[EditRegion` | Target a creature → Opens its region spawn in the editor |
| `[EditTile` | Target a creature → Opens its tile spawn in the editor |
| `[EditVendor` | Target a vendor → Opens its vendor spawn in the editor |
**How it works:**
1. Use any edit command in-game and target a creature/vendor
2. The server writes a command file to the `COMMANDS/` folder
3. The editor detects the file and automatically opens the correct spawn panel
4. Make your edits in the editor
5. Changes sync back to the server automatically
This creates a seamless two-way editing experience between your game and the editor!
---
## Server Auto-Install & Update
No more manual file copying! The editor now handles server setup automatically.
### Auto-Install
When you link your ServUO folder in Settings, the editor automatically:
- Installs server scripts to `Scripts/Custom/UORespawnServer/`
- Creates the `Data/UORespawn/` folder structure
- Sets up INPUT, OUTPUT, COMMANDS, STATS, and SYS directories
### Auto-Update
When you launch the editor with a linked server:
- Editor checks version numbers (editor vs server)
- If versions don't match, prompts you to update
- One-click update installs new server files
### Legacy Cleanup
During install or update, the editor automatically removes old folders:
- `UORespawn*/` (old naming)
- `Respawn*/` (legacy folders)
This ensures a clean installation without conflicts.
---
## New COMMANDS Folder
A new directory has been added to the server data structure:
```
Data/UORespawn/
├── INPUT/ # Editor → Server (.bin files)
├── OUTPUT/ # Server → Editor (.txt files)
├── COMMANDS/ # NEW! In-game edit command queue
├── STATS/ # Spawn statistics/heatmap
└── SYS/ # Internal tracking
```
The COMMANDS folder enables real-time communication from in-game commands to the editor.
---
## Documentation Updates
The Instructions page has been expanded with:
- **Server Integration** section - Complete folder structure diagrams and setup guide
- **In-Game Editing** section - Full documentation of all edit commands
- Updated What's New section highlighting v2.0.0.8 features
---
## ⚙️ Other Changes
- **Settings Property Renamed:** `ServUODataFolder` → `ServerFolder` for clarity
- **Server Folder Path:** Now uses `Scripts/Custom/UORespawnServer/` (matches namespace)
- **Export Path Display:** Settings page now shows correct relative paths
- **Error Handling:** Improved during server setup operations
---
## Technical Notes
- Version consistency enforced: Both editor and server report v2.0.0.8
- `ServerSetupUtility` - New utility handling install, update, and cleanup
- `CommandService` - Processes in-game edit commands via COMMANDS folder
- All async handlers have proper try-catch exception handling
- No package vulnerabilities detected
- Build passes with no warnings
---
## Installation
### Fresh Install
1. Download and extract the release
2. Run `UORespawnApp.exe` (Windows) or the `.app` bundle (macOS)
3. Go to **Settings** and link your ServUO folder
4. Server scripts install automatically
5. Restart your ServUO server
### Upgrading from v2.0.0.7
1. Download and extract the new release
2. Run the application
3. If prompted, click **Update** to install new server files
4. Restart your ServUO server
---
## Acknowledgments
Thank you to the ServUO community for continued support and feedback!
---
**Full Changelog:** [CHANGELOG.md](CHANGELOG.md)
**Documentation:** See the Instructions page within the application
**Issues:** [GitHub Issues](https://github.com/Kita72/UORespawnProject/issues)
# UORespawn v2.0.0.7 Release Notes
**Release Date:** March 1, 2026
**Platform:** Windows 10/11, macOS
**Framework:** .NET 10 MAUI with Blazor
---
## Overview
Version 2.0.0.7 focuses on **code quality improvements**, **documentation updates**, and **bug fixes** to ensure a solid, maintainable codebase for the v2.0 release series.
---
## ✨ What's New
### Code Architecture Improvements
**ISpawnEntity Interface**
All spawn types (Box, Tile, Region) now implement a shared `ISpawnEntity` interface, providing:
- Consistent 6-list spawn structure across all spawn types
- Unified Weather and Timed trigger handling
- Foundation for future generic spawn utilities and validation
**Settings Validation**
All numeric settings now include bounds checking to prevent invalid configurations:
- Range values: 1-500
- Mob limits: 1-500 (MaxMobs), 1-50 (MaxCrowd)
- Chance values: 0.0-1.0
- Intervals: Reasonable bounds per setting type
New helper methods:
- `ValidateRanges()` - Ensures MinRange ≤ MaxRange
- `GetSettingsSummary()` - Debug/logging utility
---
## Documentation Updates
### Instructions Page Overhaul
- **Renamed**: "Admin GUI" → "Control Dashboard"
- **Fixed**: Spawn system count now correctly shows "four" (Box, Tile, Region, Vendor)
- **Updated**: "World Spawns" → "Tile Spawns" for consistency
- **Removed**: Outdated command references
- **Simplified**: Testing workflow section reduced from ~200 to ~80 lines
### Server Scripts Renamed
- Folder: `UORespawnSystem` → `UORespawnServer`
- Zip: `UORespawnSystem.zip` → `UORespawnServer.zip`
- Clearer naming to distinguish server-side scripts from the editor
---
## Bug Fixes
- **Stats File Parsing**: Fixed to handle new numeric map ID format (was expecting map name)
- **WebView Overlap**: Fixed external WebView overlapping nav menu controls
- **Resource Leak**: Fixed CancellationTokenSource disposal in file watcher
- **Duplicate File**: Removed empty duplicate ViewService.cs
---
## Technical Details
### Stats File Format Change
The spawn statistics file format has been updated:
```
Old: Time|Player|MapName|PX|PY|SX|SY|CreatureName
New: Time|Player|MapID|PX|PY|SX|SY|CreatureName
Example: 12:42 AM|Wilson|1|1359|1844|1360|1645|Bird
```
The editor now correctly parses the numeric map ID.
### New Files
- `Scripts/Entities/ISpawnEntity.cs` - Shared spawn interface
- `Scripts/Helpers/Point2D.cs` - Lightweight coordinate struct
### Validation Constants
```csharp
MinRangeValue = 1, MaxRangeValue = 500
MinMobsValue = 1, MaxMobsValue = 500
MinCrowdValue = 1, MaxCrowdValue = 50
MinIntervalValue = 10, MaxIntervalValue = 60000
```
---
## Data Files
The editor generates the following files for your ServUO server:
| File | Description |
|------|-------------|
| `UOR_SpawnSettings.csv` | System configuration (human-readable) |
| `UOR_BoxSpawn.bin` | Map spawn boxes |
| `UOR_TileSpawn.bin` | Tile-based spawns |
| `UOR_RegionSpawn.bin` | Named region spawns |
| `UOR_VendorSpawn.bin` | Vendor spawn assignments |
---
## Upgrade Notes
### From v2.0.0.6
- **No action required** - This is a maintenance release
- Your existing spawn packs and settings will work without modification
- Server scripts folder has been renamed but the zip extraction handles this automatically
### Server-Side
- If you have an existing `Scripts/Custom/UORespawn/` installation, re-export from Settings → "Export Server Scripts" to get the latest version
- The server scripts folder is now named `UORespawnServer` internally
---
## Acknowledgments
Thank you to the UO community for continued feedback and testing!
---
## Full Changelog
See [CHANGELOG.md](CHANGELOG.md) for complete version history.
---
**Download:** [Releases Page](https://github.com/Kita72/UORespawnProject/releases)
**Documentation:** See the Instructions page within the app
**Issues:** [GitHub Issues](https://github.com/Kita72/UORespawnProject/issues)
*Fixed Spawn Recycling as Immortal!
*Added Directional Spawn Logic!
Redownload v2.0.0.6 to apply hotfix!
# UORespawn Release Notes
## Version 2.0.0.6 - February 22, 2026
### What's New
#### Vendor Spawn Editor
A brand new full-featured page for configuring vendors at shop signs and hives:
- Browse sign types (Bakery, Blacksmith, Tailor, etc.) organized as expandable cards
- Per-location vendor assignment with map visualization
- Bulk "Add to All Locations" feature for quick setup
- Vendor markers on map with green glow for configured locations
- Gold highlight for selected/focused location
- Badge system showing configured/total locations per sign type
#### Favorites System
- **Bestiary Favorites** - Star your most-used creatures for quick access
- **Vendor Favorites** - Star vendors for quick access in the vendor spawn modal
- Toggle between "All" and "Favorites" view
- Favorites persist across sessions
#### Region Improvements
- Region map index numbers displayed for quick identification
- Numbers dynamically sized based on region area
- Search by index number to jump directly to any region
#### Pack Dashboard Enhancements
- Shows both entry counts and location counts
- Main value displays spawn entries (creatures/vendors)
- Sublabel shows location count (boxes, tiles, regions, signs)
---
### What's Changed
#### Simplified Pack Management
The Reset/Backup system has been **removed** in favor of simpler pack management:
- No more `PACKS/Backup/` folder
- Approved packs (like DefaultPack) can now be edited just like any other pack
- Approved packs cannot be deleted (protecting your bundled content)
- To restore defaults, simply re-download the app
#### New Pack Folder Structure
```
PACKS/
├── Approved/ # Bundled packs (editable, not deletable)
├── Created/ # Your custom packs
└── Imported/ # Packs you've imported
```
#### Intelligent Dirty Flag System
- Pack sync only triggers when actual data changes are made
- Prevents false "Modified" detection on Save All
- More efficient file operations
---
### Bug Fixes
- **DefaultPack not loading on fresh install** - Fixed build configuration to properly copy all DefaultPack files
- **Created folder not tracked in Git** - Fixed .gitignore patterns
- **Pack sync** only triggers when spawn data is actually modified
- **Vendor spawn page** correctly loads sign/hive data for selected map
---
### Requirements
- Windows 10/11 or macOS (Desktop only)
- ServUO server with UORespawn server scripts installed
- .NET 10 Runtime
---
### Getting Started
1. Download and extract UORespawn
2. Link to your ServUO server folder in Settings
3. Load or create a spawn pack
4. Start spawning!
For detailed instructions, see the **Instructions** page within the app.
---
### Notes
- This is a desktop-only application (Windows/macOS)
- Server auto-generates reference files (Bestiary, Regions, etc.) on startup
- Spawn packs in `PACKS/` are your staging area; applying a pack copies data to `UOR_DATA/`
---
*For the complete technical changelog, see [CHANGELOG.md](CHANGELOG.md)*
# UORespawn v2.0.0.5 Release Notes
**Release Date:** February 19, 2026
---
## What's New
### Vendor Spawn System
This release introduces full **Vendor Spawn support** for ServUO integration! You can now manage vendor spawns directly through UORespawn with:
- Server-side vendor spawn integration
- New Vendor Spawn toggle in the Settings page
- Reload support for vendors without server restart
### Debug Logging
- New Debug Log functionality for troubleshooting
- Per-session logging to track spawn events
- Improved session management for better diagnostics
### Region Cleaner
- New utility for maintaining spawn pack cleanliness
- Helps identify and resolve region data issues
---
## Improvements
- **Settings Page**: Polished UI with better organization
- **Default Spawn Pack**: Cleaned up and updated with previously missing spawns
- **Server Synchronization**: Updated server and client version handling
- **Configuration**: Bumped settings version to support new Vendor Spawn options
---
## Bug Fixes
- **Regions List**: Fixed loading issues that caused incorrect region display
- **Region Spawn**: Resolved multiple region spawn functionality problems
- **JSON Warnings**: Eliminated MAUI JSON warning messages when handling Spawn Packs
- **.NET 10 Compatibility**: Fixed compatibility issues with the latest .NET 10 MAUI update
- **Default Pack Regions**: Corrected region data in the default spawn pack
- **Spawn Pack Loading**: Hot fix for spawn pack loading reliability
---
## Technical Changes
- Server-side refactoring for improved Vendor Spawn handling
- Enhanced Debug Log session management
- Compatibility updates for .NET 10 MAUI
---
## Installation
1. Download the release for your platform (Windows or macOS)
2. Extract to your preferred location
3. Run `UORespawnApp.exe` (Windows) or `UORespawnApp.app` (macOS)
4. Link to your ServUO installation via Settings
---
## Links
- [Full Changelog](CHANGELOG.md)
- [GitHub Repository](https://github.com/Kita72/UORespawnProject)
- [Issue Tracker](https://github.com/Kita72/UORespawnProject/issues)
---
**Thank you for using UORespawn!** If you encounter any issues, please report them on our GitHub Issues page.
# UORespawn v2.0.0.4 Release Notes
**Release Date:** February 17, 2026
**Platform:** Windows & macOS
**Framework:** .NET 10 MAUI Blazor
---
## What's New in 2.0.0.4
This release brings a complete **Spawn Pack System overhaul** with three-category organization, a brand new **DefaultPack** powered by ecology-based spawn data, and comprehensive **Instructions page updates** ensuring all documentation matches the current UI.
---
## ✨ New Features
### Spawn Pack System Redesign
- **Three-Category Organization:** Packs are now organized into **Approved**, **Created**, and **Imported** tabs for better management
- **Create New Pack:** Modal dialog to create custom spawn packs from scratch
- **Auto-Apply on Creation:** New packs are automatically loaded after creation
- **DefaultPack Auto-Extraction:** On first launch, the default spawn pack is automatically extracted from the backup ZIP
### DefaultPack - Ecology-Based Spawns
- **32 Tile Types:** Comprehensive tile-based spawning covering Grass, Forest, Jungle, Snow, Swamp, Cave, Lava, Crystal, Void, and more
- **50+ Regional Archetypes:** Region spawns for Britain, Yew, Minoc, Trinsic, all major dungeons, Ilshenar, Malas, Tokuno, and Ter Mur
- **6-Frequency System:** Each tile/region includes Water, Weather, Timed, Common, Uncommon, and Rare spawn lists
- **Weather & Time Triggers:** Proper trigger values for weather-based spawns (Rain, Storm, Snow, Blizzard) and time-of-day spawns
- **All 6 Maps:** Full coverage for Felucca, Trammel, Ilshenar, Malas, Tokuno, and Ter Mur
### Weather & Timed Spawn Triggers
- **Snow/Ice tiles** → Snow/Blizzard weather triggers
- **Swamp/Acid tiles** → Storm/Rain weather triggers
- **Lava/Obsidian tiles** → Storm weather triggers
- **Shadow/Void tiles** → Storm weather with nighttime spawns
- **All tiles** now have proper timed triggers (Witching_Hour, Middle_of_Night, Late_at_Night, etc.)
---
## Changes
### Terminology Unification
- **Box Spawn** (previously "Map Spawn") - Draw boxes directly on maps
- **Tile Spawn** (previously "World Spawn") - Tile-based automatic spawning
- **Region Spawn** - Named server region assignments
### Instructions Page
- All 12 sections comprehensively verified and updated
- Removed outdated Animals/Creatures concept
- Now uses 6-frequency system terminology throughout
- Priority color descriptions corrected (1=highest/red, 5=lowest/green)
- Max Mobs and Max Crowd descriptions clarified
- Info icon descriptions corrected for spawn type priorities
### Pack Management
- **Delete Protection:** Approved packs cannot be deleted
- **Conditional Deletion:** Created/Imported packs can only be deleted when not currently loaded
- Pack Dashboard reorganized with category tabs
---
## Bug Fixes
- Fixed weather/timed spawns not activating due to trigger values set to `None`
- Instructions terminology now matches actual UI components
- Creature names in DefaultPack corrected to match BestiaryNameList (PascalCase format)
---
## Included in This Release
### Editor Application
- `UORespawnApp.exe` (Windows)
- `UORespawnApp.app` (macOS)
### Server Scripts
- Complete UORespawn server system for ServUO
- Auto-extracted to linked ServUO folder
### DefaultPack Contents
- `UOR_BoxSpawn.bin` - Empty (customize your own box spawns)
- `UOR_TileSpawn.bin` - 192 tile spawn entries (32 tiles × 6 maps)
- `UOR_RegionSpawn.bin` - 50+ region spawn entries
- `UOR_SpawnSettings.bin` - Optimized default settings
- `pack.json` - Pack metadata
- `logo.png` - Pack icon
# UORespawn Editor v2.0.0.3 Release Notes
**Release Date:** February 16, 2026
**Version:** 2.0.0.3
**Platform:** Windows 10/11 (x64), macOS (Apple Silicon & Intel)
**Framework:** .NET 10 MAUI with Blazor
---
## What's New in v2.0.0.3
This release brings significant interactive improvements to the map editor, a brand new Spawn Packs system for sharing configurations, and numerous quality-of-life enhancements throughout the application.
---
## ✨ New Features
### Interactive XML Spawner Overlay
- **Hover to Highlight** - XML spawners now highlight when you mouse over them
- **Click for Details** - Click any spawner to see a tooltip with:
- Spawner location (X, Y coordinates)
- Home range radius
- Visual display updated to green circles with X markers for better clarity
### Interactive Server Spawn Statistics
- **Dwell-Based Tooltips** - Hover over any spawn dot and pause briefly to see:
- Player name (color-coded to match their dots)
- Location coordinates
- Total spawn events for that player
- **Individual Dot Highlighting** - Only the dot under your cursor highlights (white border), making it easier to inspect dense spawn areas
- Each player has a unique, consistent color across all their spawn events
### ⌨️ Enhanced Map Navigation
- **WASD/Arrow Key Panning** - Smooth keyboard-based map navigation
- **Diagonal Movement Support** - Hold two keys for diagonal panning
- **Zoom Toggle Button** - Switch between 1x (actual size) and 2x (zoomed) view
- Existing controls remain: Left-drag to draw, Right-drag to pan, Mini-map click to jump
### Spawn Packs System
A complete system for sharing, importing, and managing spawn configurations:
- **Pack Dashboard** - View detailed statistics when selecting a pack:
- Box Spawns, Tile Spawns, Region Spawns counts
- Maps, Total Entries, Unique Mobs
- Breakdown by frequency type (Water, Weather, Timed, Common, Uncommon, Rare)
- **Pack Types**:
- **Approved Packs** - Official, tested configurations
- **Imported Packs** - Your custom imported packs
- **Pack Actions**:
- ❤️ Like and ⭐ Favorite your preferred packs
- ✅ Apply a pack with one click (replaces current spawn data)
- ️ Delete imported packs
- **Import Packs** - Import spawn pack zip files from the community
- **Export Packs** - Export your current spawn configuration as a shareable zip
- **Submit for Approval** - Submit your pack for official approval via email
### Visual Improvements
- **Pack Dashboard Styling** - Pack name displayed centered in golden color, frequency names in blue
- **Info Icons** - Contextual help icons throughout the UI
- **Spawn ID Search** - Quick search input in spawn list headers
- **Back-to-Top Button** - Easy navigation on the Instructions page
---
## Improvements
### Toast Notifications
- Streamlined to show only warnings that explain failures
- Removed success/info toasts for a cleaner, less intrusive experience
### Instructions Page
- Comprehensive documentation of all interactive features
- Updated Map Controls section with keyboard shortcuts
- Detailed XML and Spawns toggle explanations
- Corrected spawn type terminology throughout
### Code Quality
- Updated Copilot instructions with complete project documentation
- Improved consistency across Box Spawn and Region Spawn pages
- Both pages now share XML/Spawns toggle state via ViewService
---
## Files Included
### Application
- `UORespawnApp.exe` (Windows) / `UORespawnApp.app` (macOS)
- Required runtime dependencies
### Data Files (Generated)
- `UOR_SpawnSettings.bin` - System configuration
- `UOR_BoxSpawn.bin` - Map spawn boxes
- `UOR_TileSpawn.bin` - World tile spawns
- `UOR_RegionSpawn.bin` - Named region spawns
### Server Scripts
- Complete `UORespawnSystem` folder for ServUO integration
---
## Getting Started
### New Users
1. Download and extract the release for your platform
2. Run the application
3. Go to **Settings** and link your ServUO server folder (optional, for auto-sync)
4. Start creating spawns on the **Box Spawn**, **Region Spawn**, or **Tile Spawn** pages
5. Use `[SpawnReload` in-game to load your configurations
### Upgrading from v2.0.0.2
1. Download and extract the new release
2. Your existing `Data/UOR_DATA/` files are compatible
3. Your existing `Data/PACKS/` spawn packs will be detected automatically
---
## Quick Reference
### Map Controls
| Action | Control |
|--------|---------|
| Draw spawn box | Left-click and drag |
| Pan map | Right-click and drag |
| Pan map | WASD or Arrow keys |
| Toggle zoom | Zoom button (1x/2x) |
| Jump to location | Click mini-map |
| Reset view | Reset button |
### Toggle Buttons (Mini-Map)
| Button | Function |
|--------|----------|
| **XML** (Green/Red) | Show/hide XML spawner locations |
| **Spawns** (Green/Red) | Show/hide server spawn statistics |
### In-Game Commands
| Command | Description |
|---------|-------------|
| `[SpawnAdmin` | Open admin control panel |
| `[SpawnReload` | Reload spawn data |
| `[SpawnStatus` | Quick system health check |
| `[PushRespawnStats` | Generate spawn statistics for editor |
---
## Bug Fixes
- Fixed spawn type terminology in Instructions (now correctly refers to Box/Region/Tile)
- Fixed XML spawner visual description (circles, not boxes)
---
## Known Issues
- File sync requires Windows or macOS (not supported on other platforms)
- Large map images may take a moment to load on first access
---
## Support
- **Creator:** [Wilson on ServUO](https://www.servuo.dev/members/wilson.12169/)
- **Community:** [ServUO Forums](https://www.servuo.dev)
- **Issues:** [GitHub Issues](https://github.com/Kita72/UORespawnProject/issues)
---
## Acknowledgments
Thank you to the ServUO community for continued feedback and support. Special thanks to all testers who helped identify issues and suggest improvements.
---
<p align="center">
<strong>Happy Spawning! </strong>
</p>
We use essential cookies to make this site work, and optional cookies to enhance your experience.