RustForge Sign Painter · published · build 25148677

Transmission from RustForge 🎙️
Version 6.6.1.2 delivers a massive overhaul to color fidelity, input reliability, and UI workflow. Following Rust's recent UI updates, I've tackled critical bugs that affected palette generation and in-game hex input. Under the hood, I completely eliminated the "neon color" artifact bug in the Adaptive Palette, overhauled the palette caching mechanisms, and rebuilt the input injection pipeline to guarantee seamless color swaps across all international keyboard layouts. I've also resolved image preview scaling bottlenecks and upgraded the floating History Panel with screen-aware boundary collision logic.
Adaptive Palette Color: Fixed an unmanaged memory format bug that stripped alpha channels from transparent assets, completely preventing invisible background compression noise from polluting your color palette with neon artifacts.
Dynamic Palette Cache Flushing: Rebuilt the lookup cache to automatically invalidate and regenerate whenever your active palette changes, ensuring fresh images never inherit stale color data.
Locale Safe Color Input: Re-engineered the in-game color code injection to use pure virtual key combos, ensuring 100% reliable hex code entry regardless of your Windows keyboard layout (QWERTY, AZERTY, QWERTZ, Dvorak, Etc.).
Decoupled Preview Scaling: Completely decoupled image preview loading from the in-game canvas dimensions. Unset or small canvas rectangles will no longer downscale or distort your preview and Image Editor imports.
Smart Floating History Panel: The floating Undo History window now actively tracks monitor work areas and taskbar boundaries, automatically snapping to the optimal screen location when opened.
The "Neon Noise" Artifact
The Challenge: Transparent images with hidden compression artifacts were being locked using a color format that stripped the alpha channel. The engine read invisible padding pixels as fully opaque, flooding the palette generator with neon greens, bright pinks, and random colors that didn't exist in the actual artwork.
The Fix: Migrated pixel sampling to full 32-bit ARGB memory locks with strict alpha thresholds. Transparent pixels are now completely ignored during color quantization, reserving every adaptive slot.
The Stale Palette Cache
The Challenge: To maximize performance, the engine caches color lookups. However, the cache was persisting between image loads occasionally, causing newly generated adaptive palettes to snap against previously cached color tables.
The Fix: Implemented hash tracking on the active palette. The lookup cache now detects palette changes instantly and rebuilds itself on the fly when switching images or palette modes.
The Locale-Safe Input Pipeline
The Challenge: Simulating raw keystrokes for hex input caused Unity Engine to misinterpret characters like "F" as hardware scancodes (such as Scroll Lock), corrupting color codes in-game. Standard clipboard methods also risked modifier bleeds across different international layouts.
The Fix: Rebuilt the input pipeline to bypass hardware scancode translation entirely via pure virtual key inputs, executing clean Select-All and Paste commands safely across threads.
HD Canvas Scaling (Zooming): While the new Smart Brush Suggestion feature combats the Moiré effect, if you zoom in/out heavily while painting on canvases like the new Artist DLC Canvas' Large Banner on Pole or the XL Picture Frame, the engine's scaling will change and your paint strokes will misalign. Most large Canvas's require a higher brush size due to its inflated size on screen. Fix: Do not zoom in or out while mapping/painting. If you absolutely must zoom in or zoom out, manually increase/decrease your brush size slightly to bridge the newly created gaps.
Contour Tracing & Smart Pathing (Resume Limitations): With how Contour Tracing and Smart Pathing calculate the most efficient omnidirectional paths for curves and fills, it is mathematically impossible to resume a paused painting from the exact pixel you stopped at. Instead, the engine will resume from the currently painting color, and begin from the start of that specific color layer to ensure nothing is missed. This is an intended feature of these advanced methods. It may add a few minutes to your total paint time if paused and resumed, but this prevents missing structural chunks of your image.