UOAM Client v1.2.21 Update Notes

### Drawing Mode + Coordinate, Marker, and House Interaction Fixes (v1.2.21)
- **Drawing Mode**:
- **Map drawing and overlay layers**: Added a complete world-coordinate drawing workspace with sparse, zoom-aligned overlays that render above the map and below markers/player/HUD elements. Drawings remain aligned in flat and tilted views across the supported zoom range.
- **Drawing tools**: Added circular brush and eraser tools with adjustable 1–128 world-pixel sizes, interpolated strokes, transparent-pixel paint-bucket fills, RGBA/hex colors with opacity and recent colors, plus UO Hues integration.
- **Image and text placement**: Added PNG/JPEG/BMP/GIF image import and styled text placement with move, corner scaling, rotation handles, numeric width/height/angle controls, aspect-ratio preservation, and Enter/Apply or Escape/Cancel workflows.
- **Layer management**: Added a Photoshop-style layer panel with add, rename, select, visibility, delete confirmation, drag/keyboard reordering, active-layer highlighting, and per-layer empty-state indicators.
- **Undo/redo and navigation**: Drawing operations, layer edits, fills, and rasterized image/text commits are undoable with Ctrl+Z/Ctrl+Y while draw mode is active. Space+drag and middle-drag pan normally, or move an active image/text placement during placement mode.
- **Portable persistence and sharing**: Added versioned facet-aware documents under `Data/Overlays`, sparse PNG tile storage, debounced autosave with recovery/atomic replacement, save-state feedback, and validated `.uoamoverlay` ZIP export/import packages.
- **Coordinate, Marker, and House Interaction Fixes**:
- **Sextant coordinate conversion**: Fixed latitude/longitude navigation to use Ultima Online’s Britannia map origin and dimensions, including correct east/west and north/south direction handling.
- **Marker Manager search**: Added live cross-category search by marker name, type, coordinates, and effective minimum zoom, with category-aware result actions.
- **Marker navigation**: Double-clicking a marker now stops active player-follow/tracking before centering the map, preventing the map from snapping back to the player.
- **House hover labels**: Corrected oversized house hit areas so hovering or selecting a house uses its rendered icon rectangle and no longer activates a neighboring house label.
- **Overlapping house icons**: When valid house hit rectangles overlap, hover labels and right-click selection now choose the closest icon center, using hit-area size as a deterministic tie-breaker.
- **Transparent house artwork**: House hit testing now uses the non-transparent pixel bounds of the icon bitmap instead of the full transparent PNG canvas, while preserving nearest-center overlap selection.
- **Marker Manager layout**: Improved disabled Clear-button contrast, tightened result-column widths, reduced the Category column to 85px, and increased the default window width to 1100px.
- **Go To Location layout**: Reorganized the latitude/longitude inputs into clean, aligned rows so longitude no longer wraps awkwardly beside latitude.

UOAM Client v1.2.20 Update Notes

### Boat Auto-Detection Fix (v1.2.20)
- **House-only auto-record**: WM_ADD_MULTI now only creates markers for known house graphics (0x0064-0x013B). Boats and other multis are ignored entirely.
- **Stripped boat offset 0**: Fixed boat graphic offset 0 (north-facing small boat) being misclassified as a house when ClassicUO sends the stripped multi ID on registration.
- **Boat icon persistence**: Manual boat markers now save their icon file to CSV and restore it after restart, so they no longer revert to a white dot.
- **Boat icon rendering**: Boat markers no longer use house footprint scaling; icon lookup falls back through directional boat PNGs and SHIP.cur.
- **Boat icon zoom scaling**: Boat icons scale with map zoom using a centered 4x3 tile footprint. Boat markers ignore house Icon Tilts and Scales settings; that option is hidden in Marker Manager for boat markers.

UOAM Client v1.2.19 Update Notes

### Boat Markers Fix (v1.2.19)
- **Boat auto-detection disabled**: Sailing no longer leaves a trail of boat icons on the map. ClassicUO cannot tell UOAM which boat you are on, so auto-recording moving boats was unreliable.
- **Manual boat directions**: Four directional boat icons added (`boat north`, `boat east`, `boat south`, `boat west`). Pick a type or browse to `boat-north.png` / `boat-east.png` / `boat-south.png` / `boat-west.png` in MapIcons when placing a marker.
- **House detection unchanged**: Houses still auto-record as before.
- **Legacy boats**: Existing boat markers with a MultiGraphic column in CSV still rotate correctly.

UOAM Client v1.2.18 Update Notes

### Tracking, UI, and Marker Improvements (v1.2.18)
- **Ctrl+F tracking toggle**: Turning off player tracking no longer disconnects your selected UO client. Ctrl+F now only toggles map follow; press it again to resume tracking without re-selecting the client.
- **Always On Top toggle**: New Map > Always On Top menu option (Ctrl+O) controls whether UOAM stays above other windows. Minimal (frameless) mode no longer forces always-on-top, fixing cases where the setting could get stuck on after closing in minimal view.
- **Compass in minimal mode**: The compass rose stays visible in the top-right when you double-click to hide the title bar and menu.
- **Go To Location**: Coordinate fields start empty and the X field is focused when the dialog opens, so you can type new coordinates immediately.
- **Remember marker category**: When dropping a new marker, the category dropdown remembers the last category you used.
- **Move marker category**: Marker Manager details panel now includes a category dropdown to move a marker between categories.
- **Default zoom**: Zoom menu adds Set Default Zoom and Default: X (Ctrl+Z). UOAM opens at your default zoom (1x until changed). Center Map (formerly Full Map) is now Ctrl+C.

UOAM Client v1.2.17 Update Notes

### House Icon Sets (v1.2.17)
- **Icon Set selector**: House Icon Settings now includes an Icon Set dropdown to choose between **Old** (original icons and placement defaults) and **Labeler's** (new default).
- **Labeler's icons**: Bundled **Labeler's** set with tuned per-house placement settings. Huge thanks to **Labeler** for his gorgeous, accurate, and detailed set of house icons -- they look fantastic on the map.
- **Independent settings**: Each icon set keeps its own scale, offset, and label adjustments; switching sets reloads icons and settings immediately.
- **Fortress default**: Auto-detected castle/fortress multis (same 31x31 layout) now default to **Fortress** instead of Castle, since fortresses are far more common. Change individual markers manually if you need Castle.
- **Label positioning**: Labels now anchor to the marker's map coordinates (marker.X, marker.Y) — same as the small dot markers — and no longer use house icon scale, offset, or label adjustments.
- **Multi-select/delete Markers**: Marker list now supports delete markerS with delete key support.

UOAM Client v1.2.16 Update Notes

### House Icon Settings Fix (v1.2.16)
- **Patio house vs sandstone patio**: House Icon Settings now apply separately to large patio house and sandstone patio house markers. Previously, editing "patio house" also affected sandstone patio icons because settings lookup used substring matching on full house names like "sandstone patio house".

UOAM Client v1.2.15 Update Notes

### Boat Icon Rotation (v1.2.15)
- **Facing from graphic ID**: Auto-detected boats now store their UO multi graphic ID (0x4000-0x403F). The low 2 bits encode facing per UOAssist: N/E/S/W = 0/1/2/3.
- **Rotated map icons**: Boat markers rotate the SHIP icon to match facing (0/90/180/270 degrees). Existing boats at the same location update facing when re-detected.
- **CSV column**: Optional 10th column stores the graphic as hex (e.g. `4012` for large boat south).

UOAM Client v1.2.14 Update Notes

### Boat Misclassification Fix (v1.2.14)
- **Stripped boat graphics**: Some WM_ADD_MULTI messages arrive with the 0x4000 bit already stripped (e.g. graphic 16 instead of 0x4010). These are now recognized as boats and named Small/Medium/Large Boat instead of "House (N)".
- **Preview flag overlap**: When the 0x4000 preview flag is set on a stripped boat offset, the message is classified as a boat instead of a deferred house preview.

UOAM Client v1.2.13 Update Notes

### Boat Naming Fix (v1.2.13)
- **Simplified boat names**: Auto-detected boats now use only "Small Boat", "Medium Boat", or "Large Boat" based on graphic ID ranges. Dragon, Tokuno, galleon, and other variant names are no longer shown.

UOAM Client v1.2.12 Update Notes

### Boat vs House Auto-Detection (v1.2.12)
- **Boat classification**: Auto-detected multis in the boat graphic range (0x4000-0x403F) are now recorded as type "boat" instead of being mislabeled as houses.
- **Boat marker type**: New default "boat" marker type uses the ship icon with a blue color, visible at 1/2x zoom.
- **Graphic parsing fix**: WM_ADD_MULTI parsing now correctly distinguishes house preview flags from boat multi graphics that share the 0x4000 bit.

UOAM Client v1.2.11 Update Notes

### Player List Follow (v1.2.11)
- **Follow on Double-Click**: Double-clicking a player in the Linked Players window now follows them on the map, continuously centering as they move.
- **Break Follow**: Arrow key panning or toggling Track Player stops following another player and returns to normal map control (own-player tracking when Track Player is enabled).

UOAM Client v1.2.10 Update Notes

### House Auto-Detection Fix (v1.2.10)
- **ClassicUO 0x4000 flag**: Fixed house auto-detection ignoring WM_ADD_MULTI messages from ClassicUO. ClassicUO sends newly visible houses with the 0x4000 graphic flag (Item.WantUpdateMulti); UOAM was discarding all of these as deed previews, so walking near houses never recorded anything unless they were already loaded at registration time.
- **Preview debounce**: 0x4000 messages are now debounced (400ms position settle) so moving house-deed previews are not spam-recorded, while stationary houses entering view are recorded correctly.
- **UOA registration toggle**: Fixed ClassicUO UOA REGISTER handling when ClassicUO returns code 2 (toggle unregister). UOAM now re-registers immediately instead of treating that as success while unregistered.
- **In-game multi burst**: When the player enters the game after UOAM registered at login screen, UOAM now refreshes registration once to receive ClassicUO's initial ADD_MULTI burst for houses already in range.

UOAM Client v1.2.9 Update Notes

### House Auto-Detection Fix (v1.2.9)
- **ClassicUO + Razor**: Fixed house auto-detection when ClassicUO has the Razor plugin loaded. Clients now register with ClassicUO's UOA API (required for WM_ADD_MULTI house messages) instead of only using the Razor position path.
- **Arrow Key Panning**: Panning the map with arrow keys no longer saves Track Player as off in settings.json, so client connection and house detection still auto-start on the next launch.
- **Deep Link Startup**: Opening via a uoam:// location link now reconnects to the UO client after the map loads when house auto-detection or track player is enabled.

UOAM Client v1.2.8 Update Notes

### Marker Manager Label UI (v1.2.8)
- **Category Toggle Placement**: Hide Labels / Show Labels button now sits at the bottom of the Marker Categories list (above Bulk Edit), and only appears when a category is selected.
- **Hidden Labels Indicator**: Category names in the list appear dimmed when that category has labels hidden.
- **Bulk Edit Simplified**: Removed redundant Show All / Hide All buttons; bulk Show Labels / Hide Labels remain and apply to the selected category with the type filter (same as zoom, color, and type bulk actions).

UOAM Client v1.2.7 Update Notes

### Label Visibility Controls (v1.2.7)
- **Per Category**: Marker Manager categories list has a Hide Labels / Show Labels toggle for the selected category.
- **Per Marker Type**: Marker Type Manager includes a Hide Labels option for each type.
- **Per Marker**: Marker details panel has a Show Label checkbox; uncheck to always hide that marker's label.
- **Bulk Edit**: Bulk edit (filtered by type) can show or hide labels for all matching markers in a category.
- **Persistence**: Category label settings save in settings.json; per-marker settings save in marker CSV files; per-type settings save in marker_types.json.

UOAM Client v1.2.6 Update Notes

### Player List Navigation (v1.2.6)
- **Double-Click to Go**: Double-click a player name in the Linked Players window to center the map on their current coordinates (same as a `uoam://go?x=...&y=...` link).

UOAM Client v1.2.5 Update Notes

### Deep Link Navigation Fix (v1.2.5)
- **uoam:// Links on Startup**: Fixed cold-start deep links (e.g. `uoam://go?x=2639&y=131`) opening at the wrong map position. Link coordinates now take priority over auto player tracking and async map initialization.
- **Track Player Suppressed**: Opening via a location link no longer recenters on the tracked player position after load.

### Critical Fixes (v1.2.5)
- **Startup Map Error**: Fixed "Cannot set Owner property to a Window that has not been shown previously" crash on first launch when the UO data path dialog appeared during map initialization.
- **UO Client Folder Menu**: Added Map > UO Client Folder... to re-open the UO data path selection dialog at any time (for users who missed the first-run prompt or have an empty path in settings).
- **Arrow Key Tracking**: Arrow key panning no longer disconnects the linked UO client. Track Player can be re-enabled after manual map navigation without re-selecting the client.

UOAM Client v1.2.4 Update Notes

### Popup Monitor Placement (v1.2.4)
- **Owner Monitor Fallback**: Popup windows now open on the same monitor as the main UOAM window when no saved position exists, the saved position is off-screen, or the saved position is on a different monitor.
- **Marker Manager Fix**: Reused windows (Marker Manager, Chat) re-check monitor placement every time they are shown, so they no longer stay on a stale monitor after you move the main window.

### Window Position Memory (v1.2.3)
- **Popup Position Persistence**: Player list, chat, ban list, marker manager, dialogs, and other owned windows now remember their last position and size between sessions.
- **Multi-Monitor Support**: Saved positions are validated against all connected monitors; off-screen positions fall back to default placement.
- **DPI-Aware**: Window positions are stored in device-independent pixels with DPI scale metadata for correct restoration across display scaling settings.

### UI Readability Fix (v1.2.3)
- **Name Size Slider**: Fixed Link menu "Name Size" label, percentage text, and slider being nearly invisible on the light submenu background. Text is now dark and the slider uses darker track/thumb colors.

UOAM Client v1.2.2 Update Notes

### Bulk Edit & Z-Order Fixes (v1.2.2)
- **Bulk Zoom Fix**: Fixed bulk zoom apply setting wrong values on European locale systems (e.g. 1/2x became 5x, 1/8x became 125x). Zoom tags now parse with invariant culture.
- **Popup Z-Order**: Player list, chat, ban list, marker manager, and other owned windows now stay in front of the map when Always On Top is enabled.
- **Bulk Change Category Type**: New bulk action in Marker Manager to change all selected markers to a different category type, with a prompt when choosing "New Type".

UOAM Client v1.2.1 Update Notes

### Room Ownership Fix (v1.2.1)
- **Unique Player Serial**: UOAM Client no longer sends the same hardcoded serial (0x12345678) for every player. Each character name now gets a stable unique serial, so only the actual room owner receives owner privileges.
- **Ownership Updates**: Client now reacts to "Room ownership transferred to ..." system messages and hides kick/ban/set-owner buttons when you are not the owner.
- **Dynamic Admin Buttons**: Player list and ban list windows refresh admin button visibility when ownership changes.

### Marker Visibility & Labels (v1.2.0)
- **Min Zoom Semantics**: Marker visibility and labels now strictly follow each marker's Min Zoom setting. If you are zoomed out past that value, the marker and label hide. At or above that zoom, the marker always shows and its label shows when Show Labels is enabled.
- **All Labels in View**: Removed the 300-label-per-frame cap that caused labels to appear only in random map regions (e.g. oak labels on one peninsula but not another).
- **No Dot Fallback Below Min Zoom**: Markers no longer show as dots below their configured Min Zoom - they fully hide until you zoom in enough, matching marker manager behavior.

### Fixes (v1.1.9)
- **Marker Vanishing**: Markers no longer disappear when zooming between levels like 1/1.34x and 1/1.68x. Dots now stay visible from 1/8x up until each marker's icon threshold (previously dots vanished below minZoom/3).
- **Zoom Display**: Fixed zoom indicator showing commas (1/1,34x) on European locale systems - now always displays as 1/1.34x using invariant formatting.
- **Dot Labels Restored**: Show Labels again applies to dot markers, but optimized: compact text-only labels (no black background) with spatial-grid rendering and a 300-label cap to prevent freezes.

### Performance & Labels (v1.1.8)
- **Label Freeze Fix**: Fixed UI freeze when zooming out with Show Labels on over dense marker sets (e.g. 10,000+ oak trees). Labels no longer render for dot-only markers like oak/ash/yew - use hover to identify them.
- **Smart Label Rules**: Show Labels now draws permanent names only for icon markers (banks, houses, landmarks). Generic resource dots and name=type markers skip labels to prevent overlapping black blobs.
- **Render Performance**: Marker drawing now uses the spatial grid (viewport cells only) instead of scanning every marker every frame. Label count capped at 250 per frame with cached text.

### Link Menu (v1.1.7)
- **Player Name Size**: New slider under Link menu adjusts linked player name label size on the map (75% to 200% of default). Setting is saved between sessions.

### Map & UI Improvements (v1.1.6)
- **Show Labels Fix**: "Show Labels" now displays marker names at all zoom levels, not only at 2x and above.
- **Oak/Resource Markers**: Fixed oak, ash, yew, and other resource tree markers vanishing when zooming in past their minimum zoom (they had no icon files, so the icon path skipped them entirely). They now render as colored dots at every zoom level.
- **Hover Labels Fix**: Hover tooltips now work for dot-only markers (including oak trees) and all markers without icon files, not just markers with icons.

### Critical Fixes (v1.1.5)
- **Multi-Player Freeze Fix**: Fixed a deadlock that could completely freeze the UI (including the close button) when connected to a UOAM server with other players linked. The network thread no longer holds a lock while firing player-list events, and UI windows use non-blocking updates instead of blocking the network thread.
- **Player Overlay Performance**: Player marker updates on the map are now batched and throttled (one update per server packet batch, max ~4/sec) instead of queuing a separate UI callback for every individual player move.
- **Position Read Performance**: ClassicUO position reads no longer block the UI thread on every poll tick; the main window handle is cached once at startup.

### Client Tracking (v1.1.4)
- **Auto-Disconnect**: Detects when the linked UO/Razor/ClassicUO client is closed and updates status to "Client: Disconnected" instead of staying stuck on "Connected".
- **Auto-Reconnect**: When Track Player is enabled, automatically searches for and re-attaches to your client every 2 seconds after a disconnect (matches by last selected window title).
- **Non-Blocking IPC**: Uses SendMessageTimeout (500ms) instead of blocking SendMessage when reading position from ClassicUO/Razor, preventing UI hangs if the game client is unresponsive.
- **Background Position Polls**: Position reads run on a background thread so the map UI stays responsive during tracking.

### Map & UI Improvements (v1.1.4 - v1.1.5)
- **Zoom Indicator**: Shows current zoom level (e.g. "Zoom: 2x") in the top-left corner; click for preset zoom levels, scroll wheel for fine adjustment.
- **Hover Labels**: When Show Labels is on but zoom is below 2x, marker names appear as tooltips on hover instead of cluttering the map.
- **Marker Performance**: Major rendering optimizations for large marker sets (~10,000+). Pan and zoom no longer deep-copy all markers; viewport culling, spatial grid hit-testing, and a fast dot render path keep the map smooth.
- **Logging Location**: All log files now write to a Logs subfolder next to the executable (e.g. Standalone\Logs\uoamclient.log).

### Previous Notes (v1.1.3)
- **Auto-House Detection**: Automatically detects houses you walk past in-game and records them to your markers list (Requires ClassicUO/Razor). Supports all standard house types and common shard-specific variants (Keeps, Villas, etc).
- **House Icon Alignment**: Anchoring icons to the South corner (front-center) of house plots.
- **Deep Linking**: Added support for `uoam://` links to instantly navigate to coordinates.
    - Example: `uoam://go?x=1337&y=1624` (Shareable location links!)
    - **Single Instance**: Links open in the existing UOAM window if it's already running.
- **CLI Configuration**: You can now load specific settings files via command line.
    - Example: `UOAMClient.exe settings myconfig.json`

### Previous Notes (v1.1.2)
- **Window Management**: Now remembers window size and position between sessions. Fixed restoration of size when switching back from Minimal Mode.
- **Grid Overlay**: Added 8x8 grid overlay for pixel-perfect house placement (Toggle: Ctrl+8).
- **Auto-Update**: Added support for checking and downloading updates automatically from uorenn.com.
- **House Icons**: Fixed scaling and tilting of house icons (Sandstone, Tower, Keep, Castle, etc.) for perfect alignment on both tilted and flat maps.
- **Marker List**: Added sorting by Name, Type, Coords, and Zoom. Added ability to double-click a marker in the list to immediately center the map on it. Now a single instance window (no more duplicates). Removed always-on-top behavior.
- **Precision Tracking**: Fixed +1 pixel coordinate offset. Player tracking and marker positioning is now pixel-perfect.
- **Tracking Reliability**: Ensured player tracking resumes seamlessly after manual map cursor movement without needing to re-select the client.
- **Context Label**: Added context-aware user name label that appears above your map cursor dot when tracking is active.
- **Metadata**: Updated "About" box with dynamic versioning and corrected update check URLs.
- **UI Branding**: Removed "Build" timestamp from the title bar.
- **Hotkeys**: Fixed and added hotkeys for toggling labels (Ctrl+S, Ctrl+H) and grid (Ctrl+8). Added Ctrl+K (Link to Server) and Ctrl+P (Player List).
- **Delete Marker**: Added "Delete Marker" option to the right-click context menu.
- **Arrow Key Navigation**: Using arrow keys to navigate now properly stops player tracking.
- **Zoom Persistence**: Now remembers your zoom level between sessions.
- **House Icon Editor**: New settings window (Markers > House Icon Settings...) to customize house icon sizes and offsets in real-time, with save/load support.
- **Flat Transform Editor**: Edit the scale, skew, rotation, and offset of non-tilted house icons in real-time.
- **UI Refinements**: Hides local player label when linked to server to avoid "double name" overlap.
- **Accurate Colors**: Fixed player dots appearing gray by implementing robust hue parsing (handling '#' legacy formats). Colors now refresh in real-time on every move.
