Repository navigation
Releases: Applelyyyy/MORPHIX
Release list
v4.0.2
MORPHIX v4.0.1
fix: keep global hotkeys active when minimizing to tray
Full Changelog: v4.0.1...v4.0.2
v4.0.1
MORPHIX v4.0.1
What changed
- Added a helper that reads both vibrance inputs from the UI, clamps values to 0-100, and syncs runtime state.
- Updated Save flow to reuse that helper before writing vibrance to config.
- Updated color hotkey handlers to refresh vibrance from UI before applying the selected preset.
Bug fixed
Color hotkeys sometimes used stale vibrance values until config was saved again.
Hotkeys now apply the current UI values immediately.
v4.0.0
MORPHIX v4.0.0
Features
- Added a dedicated Color tab with two independent presets: Color 1 and Color 2.
- Added per-preset Vibrance controls (
0-100). - Added config persistence for:
Color1.VibranceColor2.VibranceColorHotkey1ColorHotkey2
Improvements
- Color and resolution controls now toggle correctly when switching tabs.
- Preset titles now switch dynamically between Resolution and COLOR.
- Save & Apply now applies color settings immediately.
Bug Fixes and Error Handling
- Improved NVAPI loading reliability (
nvapi64.dllfallback tonvapi.dll). - Added compatibility fallback for older NVIDIA driver API paths.
- Added input validation:
- Vibrance clamped to
0-100 - Invalid monitor index guarded
- Vibrance clamped to
- Improved monitor targeting:
- Applies to selected monitor first
- Falls back to enumerated NVIDIA displays if needed
- Added clearer debug logging for NVAPI init/apply failures.
Support
- Issues: GitHub Issues
- License: MIT
3.2.0
MORPHIX v3.2.0
Release date: 2026-03-06
Bug Fixes
-
Refresh Res button reset selections — clicking Refresh Res read
config.inifrom disk to restore combo selections; if the INI was stale or the drive was slow, selections could silently fall back to the first item. Now reads from an in-memory cache that is always in sync with the last Save & Apply. -
Full-window repaint on hotkey press — pressing F7 or F8 invalidated the entire 666×448 window even though only the preset card area (y 132–304) changes. On slower integrated GPUs this caused a visible flicker. Invalidation is now scoped to the preset card rect only.
-
GDI handle leak risk in paint paths — every WM_PAINT, WM_DRAWITEM, and combo repaint event was calling
CreateSolidBrush/CreatePenfollowed byDeleteObject. Across rapid mouse movement over buttons or scrolling the dropdown, this produced bursty GDI heap traffic. All transient GDI objects in hot paths have been replaced with pre-created handles.
Key Changes
GDI object caching
Nine GDI objects that were previously allocated and freed on every render event are now created once at WM_CREATE and destroyed at WM_DESTROY:
| Handle | Value | Used in |
|---|---|---|
hBrushAccent |
COL_ACCENT |
monitor accent bar, combo selected row |
hBrushAccent2 |
COL_ACCENT2 |
Save & Apply button normal state |
hBrushGreen |
COL_GREEN |
active preset top bar and bottom bar |
hBrushHotlight |
RGB(38, 38, 52) |
Refresh Res hover state |
hBrushText2 |
COL_TEXT2 |
combo dropdown chevron fill |
hPenGreen |
2 px COL_GREEN |
active preset card border |
hPenAccent3 |
1 px COL_ACCENT3 |
Save & Apply button border |
hPenAccent2Thin |
1 px COL_ACCENT2 |
Refresh Res hover border |
hPenText2 |
1 px COL_TEXT2 |
combo dropdown chevron outline |
Before: up to 14 GDI alloc/free pairs per frame (5 in WM_PAINT + up to 9 across three combo repaints).
After: zero allocations in any paint or draw path.
Resolution string cache
g_savedRes1[64] and g_savedRes2[64] hold the last-written resolution strings from SaveConfig() and are populated on startup by LoadConfig(). The Refresh Res click handler now reads these instead of calling GetPrivateProfileStringA twice.
Partial window invalidation
All three InvalidateRect(hwnd, NULL, FALSE) calls in WM_HOTKEY changed to InvalidateRect(hwnd, &rcPresets, FALSE) where rcPresets = {12, 132, 654, 304}. The header, monitor card, and footer rows are not repainted on hotkey-triggered preset switches.
Internal
- Split monolithic
main.cppinto focused translation units:globals.h,utils.cpp,display.cpp,config.cpp,font.cpp,controls.cpp,wndproc.cpp,main.cpp. compile.batupdated for multi-file build.
Support
- Issues: GitHub Issues
- License: MIT
v3.1.2
MORPHIX v3.1.2
Bug Fixes
- Fixed resolution compatibility check falsely marking valid resolutions as incompatible —
CDS_TESTnow tests width and height only, ignoring refresh rate and bit depth during validation - Fixed font install path writing to exe directory instead of the proper Windows Fonts folder (
%LOCALAPPDATA%\Microsoft\Windows\Fonts\) - Fixed variable expansion bug in
compile.batthat caused the font registry entry to be written with an empty path - Fixed font not persisting across reboots when installed from embedded resource
Changes
- Font is now installed to
%LOCALAPPDATA%\Microsoft\Windows\Fonts\— no administrator rights required compile.batnow automatically downloadsJetBrainsMono-Bold.ttfif the file is missing before compilingcompile.batinstalls the font for the current user at build time so it is available immediately on first run- Application now falls back to loading the font from a disk file next to the exe if the embedded resource is absent, instead of silently skipping installation
Requirements
- Windows 7 or later
- MinGW-w64 (for building from source)
- Internet connection required only if font file is missing at build time
Support
- Issues: GitHub Issues
- License: MIT
v3.0.0
MORPHIX v3.0.0
Resolution Manager for Windows — switch display resolutions instantly with hotkeys.
🚀 What's New
- Dark Theme — Deep black (
#0B0B0E) with violet accent (#7C3AED)
📦 Requirements
- Windows 7 or later
- GPU drivers with
EnumDisplaySettingsExsupport
⚠️ Known Issues
- JetBrains Mono font must be installed separately for preset labels
(falls back to Consolas if not found)
💬 Support
- Issues: GitHub Issues
- License: MIT
v2.1.0
MORPHIX v2.1.0
🎮 Fast resolution switching for Windows with custom hotkeys
Features
- 🎯 Dual resolution profiles with instant hotkey switching
- ⌨️ Customizable hotkeys (default F7 & F8)
- 🖥️ Multi-monitor support
- 💾 Configuration persistence
- 🔄 Quick reset to original resolution (Ctrl+Alt+Shift+R)
- 📦 System tray integration
💬 Support
- Issues: GitHub Issues
- License: MIT