Releases: ai-blink/win-resize
Release list
WindowResizer 0.02.0
WindowResizer v0.02.0
Release date: 2026-09-30
The first stable release of the rewritten WindowResizer. It replaces the PyQt5 app (v0.01.5) as the
distributed executable: the app is now WPF on .NET 10, shipped as one self-contained
WindowResizer.exe (about 72 MB) that carries its own .NET runtime.
SHA-256 of WindowResizer.exe: 9323D2A52C49C7A96FBD92E64FB6F57EEDDA001ED5E84A698DCC29843497F373
Highlights
- A sidebar app with five pages: Windows and profiles, Overlay buttons, Shortcuts, Settings, Log and About.
- Profiles: save a window's place (Ctrl+S), apply to every matching window, overwrite a place from a window
with undo, match by executable path, process name, title (contains, exact, regex) or a combination.
Existing v0.01.5profiles.jsonfiles are read and written in the same format; keys the app does not
know are kept. - Position lock: a profile's window that is dragged or resized away is put back to the place it was applied
at (tolerance, restore on move, restore on resize and the max attempts of the profile are honoured).
Maximized and minimized windows are left alone. A window that cannot be moved (for example an
administrator window) is given up after the profile's max attempts and the status line says so. - Mouse confinement: the cursor is confined to the profile's window only while that window is in front; it
is released when you switch away and confined again when you come back. The profile's escape key
(default Escape) frees it until the profile is applied again. - New-window auto-apply: a window that appears after the app starts and matches an auto-apply profile gets
the profile automatically, using that profile'sapply_delay,max_retriesandretry_delay. When
several profiles match, the most specific one wins. Windows already open at start are not touched.
The status bar shows "Watching for new windows: N profile(s)". - Overlay buttons: each button stores its own name and the window place and size it restores, apart from
profiles, and moves the window you were just using there. A properties window (General, Size and
place, Behavior, Look) has an actual-size preview; a place can be taken from the last window or picked on
screen with an outline like a capture tool. Profiles that had an overlay in v0.01.5 are copied into
buttons once on the first start. - Global shortcuts per profile (several combinations and actions), an apply-all shortcut and an
always-on-top toggle; a combination another program holds is listed with the reason. - Settings: light, dark or follow-system theme (Windows high contrast is honoured), an app scale of 75% to
250%, Korean or English labels, start with Windows, remember the window place. - A log page keeps every status message and unhandled error and can be copied or exported.
- Single instance: only one copy runs per Windows session (the same mutex as v0.01.5, so the two apps do
not run together); a second start brings the first window forward instead of doing nothing. - The app stays in the system tray when its window is closed; Ctrl+Q or the tray menu exits.
Changes from v0.01.5 you may notice
- The mouse is no longer kept inside the window after you switch to another window (v0.01.5 kept it until
the release shortcut). - The escape key of a profile now works (v0.01.5 saved it but ignored it).
- A lock restores to the window's real place after the move, not to the value in the profile, so a window
with a minimum size does not fight the lock forever. - New-window auto-apply follows each profile's delay and retry settings (v0.01.5 used fixed values) and
needs no separate start button: it runs while at least one enabled profile has auto-apply on. - Overlay buttons are separate from profiles (see above), and "Close all" became "Hide all buttons".
Not in this release
- The three-second profile preview outline of v0.01.5.
- Chinese and Japanese labels inside the app (Korean and English only; documents are in four languages).
- An installer and an update mechanism.
- The on-screen edit mode for overlay buttons (drag and resize handles) and undo of "Overwrite with the
current window's place". - The profile editor still shows "Use an overlay button"; it no longer creates buttons.
Compatibility
- Profile files keep the v0.01.5 format. Settings live in
HKCU\Software\WindowResizer\Next; the theme,
app scale and overlay settings of v0.01.5 are read once on the first start and never written back. - Windows 10 or 11, 64-bit. Windows that run as administrator cannot be controlled by a standard-privilege
WindowResizer; run it at the same level when needed.
Verification
- .NET solution build: 0 warnings, 0 errors. 281 tests pass (Core 127, App 114, Infrastructure 40; one
focus-dependent live test can be skipped), including a render smoke that draws every page and window with
zero binding errors, and fake-window tests of the lock, the confinement and the auto-apply monitor. - Checked on a copy of the profiles with temporary registry keys, driven by UI Automation: the overlay
buttons (copy from profiles, New button, properties window, actual-size preview, the on-screen picker
outline and Esc), a second start signalling the first, and that the realprofiles.jsonwas not changed. - Not checked by a real mouse click: the overlay button right-click menu and choosing a window with the
on-screen picker. The lock, the mouse confinement and the auto-apply monitor were tested with fakes and
their wiring, not against real programs in this release process; please report anything odd.
WindowResizer v0.01.5
WindowResizer v0.01.5
릴리스 날짜: 2026-09-25
주요 변경
- 프로필별 오버레이 버튼을 추가했습니다. 클릭 또는 머무름으로 프로필을 적용하고,
대상 창의 포커스를 빼앗지 않으며 전역 숨김 스위치를 제공합니다. - 프로필 단축키 세트가 재시작 뒤에도 유지됩니다. 설정 메뉴에서 모든 일치 프로필을
적용하는 별도 전역 단축키를 설정할 수 있습니다. - 전체 적용이 일치하는 모든 창을 검사합니다. 실패한 네이티브 창 조작은 성공으로
표시하지 않고 실패로 유지합니다. - WPF 이전 기반으로 .NET 10 솔루션 스캐폴드와 계층 경계 테스트를 추가했습니다.
이번 릴리스의 배포 EXE는 계속 PyQt5 데스크톱 앱입니다.
검증
- 추적 중인 전체 Python 회귀 테스트: 132개 통과.
- .NET 솔루션: 경고 0개, 오류 0개, 테스트 8개 통과.
- PyInstaller 단일 EXE 빌드 통과.
- EXE 파일 버전 및 제품 버전: 0.01.5.
배포 파일
- 파일: WindowResizer-v0.01.5.exe
- SHA256: 3A03BA8FCC5955C4D7F43D23CD76DAB89DC5DEE682412A97A274E31344FF0942
개인정보
프로필에는 로컬 실행 파일 경로가 포함될 수 있습니다. 이 릴리스에는 단일 실행 파일만
포함되며, 로컬 프로필과 로그는 포함하지 않습니다.
v0.01.3 | 앱 중복 실행 방지
WindowResizer v0.01.3
변경 사항
- Windows 세션별 named mutex를 추가해 앱의 중복 실행을 막았습니다.
- 이미 실행 중인 상태에서 다시 실행하면 메인 창을 열지 않고 안내 후 종료합니다.
- 정상 종료와 시작 중 예외 경로에서 mutex 핸들을 해제합니다.
- 창 제목, 트레이 표시, 실행 파일 메타데이터를 0.01.3으로 동기화했습니다.
검증
- 전체 단위 테스트: 35개 통과
- PyInstaller 단일 EXE 빌드 통과
- EXE 파일 버전 및 제품 버전: 0.01.3
- native mutex 획득, 중복 거부, 해제 후 재획득 확인
배포 파일
WindowResizer-v0.01.3.exe- SHA256:
291C3A2418C2B47229955E276FB068BA47939AEB57865E36502BE45066B6696C
개인정보
프로필은 로컬 실행 파일 경로를 포함할 수 있습니다. 이 릴리즈에는 EXE 단일 파일만 포함되며, 로컬 프로필과 로그는 포함하지 않습니다.
v0.01.2 | 프로필 편집과 화면 배치 안정화
WindowResizer v0.01.2
변경 사항
- 기본 창 크기를 현재 화면의 작업 영역 안에서 계산하도록 수정했습니다.
- 위치 프리셋이 선택한 대상 창이 있는 모니터의 작업 영역을 기준으로 계산됩니다.
- 혼합 DPI 모니터 환경에서 프로필 미리보기 위치를 Win32 물리 좌표와 Qt 좌표 사이에서 올바르게 변환합니다.
- 프로필 편집기의 창 설정 탭을 스크롤 가능한 컴팩트 레이아웃으로 정리해 버튼과 라벨이 잘리지 않도록 했습니다.
- 선택한 창에서 새 프로필을 만들 때 제목, 프로세스, 실행 파일 경로, 현재 좌표와 크기를 자동으로 채웁니다.
- 새 프로필 저장이 실패하면 편집기를 닫지 않고 입력 내용을 유지합니다.
검증
- 전체 단위 테스트: 32개 통과
- PyInstaller 단일 EXE 빌드 통과
- EXE 파일 버전 및 제품 버전: 0.01.2
- 8초 실행 스모크 통과
배포 파일
WindowResizer-v0.01.2.exe- SHA256:
813F7F69EB199F953A23D8E48F65D31B9687D7DFF55D5FA22CBC993F3AE56AD4
개인정보
프로필은 로컬 실행 파일 경로를 포함할 수 있습니다. 이 릴리즈에는 EXE 단일 파일만 포함되며, 로컬 프로필과 로그는 포함하지 않습니다.
win-resize v0.01.1
v0.01.1 핫픽스 릴리스
프로필 저장과 백업 복구, 다중 모니터 커서 제한 해제, 시스템 테마 및 선택 대비, 고해상도 DPI 초기화, 일치하지 않는 프로필 피드백, 깨끗한 PyInstaller 빌드를 보완했습니다.
검증: 회귀 테스트 23건 통과, 공식 PyInstaller 빌드 성공, 패키지 EXE 10초 기동 및 종료 확인.
SHA-256 (WindowResizer.exe): 9F810881D4755258E3D7551CFDF67456204D27B359BF552F5E71C699150ACF13
win-resize v0.01
v0.01 최초 릴리스
Windows 창 위치와 크기 관리, 실행 파일 경로 기반 프로필, 자동 적용, 테마, 시스템 트레이 동작을 포함합니다.
검증: 회귀 테스트 14개 통과, PyInstaller 빌드 성공, Windows 실행 파일 기동 확인.
SHA-256 (WindowResizer.exe): F792C0E6B99A3C65F96AD1B59151AA128C8B4F93B90C92C8F7B27699B9364BBE