Static / screenshot validation
==============================

1) C# source structural check
- Program.cs            brackets/strings/comments balanced
- Theme.cs              balanced
- NativeMethods.cs      balanced
- Models.cs             balanced
- HuntEngine.cs         balanced
- HudOverlayForm.cs     balanced
- MainForm.cs           balanced
- Dialogs.cs            balanced

2) User-provided 2x2 MapleStory screenshot calibration
Screenshot size: 2048 x 1157
Each quadrant was treated as one replica slot.
Primary automatic minimap analysis ROI:
- X: 0% of slot width
- Y: 9% of slot height
- Width: 15% of slot width
- Height: 12% of slot height

Using the same yellow pixel threshold and connected-component rules implemented in HuntEngine.cs,
the primary ROI isolated exactly one preferred character-marker candidate in all 4 quadrants:
- Slot 1 candidate center: approx (76.5, 39.0) in ROI
- Slot 2 candidate center: approx (77.4, 38.6) in ROI
- Slot 3 candidate center: approx (77.2, 37.3) in ROI
- Slot 4 candidate center: approx (79.4, 37.4) in ROI

The same ROI produced zero accepted purple/rune candidates in the supplied screenshot, avoiding false rune alerts in that frame.

3) Limitation
This environment is Linux, so Windows DWM Thumbnail / WinForms / actual MapleStory runtime execution cannot be performed here.
Run build.bat on Windows for the first native build and live test.

v0.3 SAFETY LOCK VALIDATION
---------------------------
- Removed System.Diagnostics.Process.GetProcessById / ProcessName introspection.
- Source-window matching now uses ordinary window title/class plus ordinal and PID only as an ordering value.
- Added safety_check.ps1 build gate.
- Native P/Invoke DLL allow-list: dwmapi.dll, user32.dll, gdi32.dll only.
- Forbidden categories: process memory, remote threads/injection, hooks, synthetic input,
  game-window messages, packet libraries, module inspection and device/driver access.


v0.3.2 static checks:
- Resize path invalidates the host and updates DWM destinations without resizing the layered HUD through Form.Bounds.
- HUD bitmap size/location is derived from the host client rectangle and applied atomically with UpdateLayeredWindow.
- Modal window picker/crop/region/preset dialogs suspend the HUD overlay and inherit TopMost from the host.

v0.3.3 BRANDING VALIDATION
--------------------------
- Executable/project/solution/namespace renamed to MapleHuntMultiView.
- AppData preset folder renamed to %APPDATA%\MapleHuntMultiView.
- Assembly product/title metadata set to Maple Hunt MultiView.
- Distributed text/source contains no legacy third-party product-brand identifier.
