Releases: wiradeltaid/wira-desk
Release list
v0.3.0
Added
- Directional Custom-Percentage Top Snap: Configurable top-edge snapping default set to 33% (
Ctrl+Alt+Shift+Up) while lateral and bottom edges remain at 67%, with full backward compatibility and persistent configuration. - Canonical Update Check Subsystem: Update descriptor checks migrate to the self-hosted endpoint
https://wiradelta.com/api/v1/update/wira-desk/enforcing strict no-redirect policy (Redirects::Never), sharing identical 4-part User-Agent contract (WiraDesk/<version> (Windows <major>.<minor>.<build>; <arch>)) with installer downloads. - Portable Zip Distribution: Release workflows package executables, license, and notices into
WiraDesk-<version>-x64-portable.zip, eliminating loose executable uploads, protected by an automated release artifact verifier in CI. - Settings Embedded URL Registry: Centralized registry for all studio links with trailing slashes (
/), with hardened browser opening allowlist. - Formal Indonesian Legal Copies: Synchronized
PRIVACY.id.mdandSECURITY.id.mdwith official copy stamps and dual-language alignment. - Visual Window Switcher: Same-app visual switcher overlay displaying live window tiles and thumbnails with adaptive layout, keyboard navigation (including Shift-held backward cycling), and mouse selection.
- Driverless Mouse Desktop Navigation: Native mouse hook support mapping thumb back/forward buttons and horizontal tilt wheel left/right to desktop switching, snapping, and arrangement presets without manufacturer drivers.
- Header Defaults Buttons: Pane-level
↺ Defaultsbuttons in Shortcuts, General, and Mouse headers with conditional visibility appearing only when active draft differs from defaults. - Real-time Tray Warning Reset: Automatic clearance of the system tray warning indicator upon successful configuration reload, while maintaining critical hook error precedence.
Changed
- Settings About Pane Layout Polish: Natural word wrapping without awkward mid-sentence breaks for update toggle disclosure, non-breaking space for Windows 11, three-line license block sequence, and removal of duplicate GitHub button in Card 3 while preserving the Source code text link in Card 1.
- Update Check Error Message Differentiation: Update check descriptor query failures explicitly cite
wiradelta.com answered with status {code}. You can try again., reserving download server error terminology strictly for installer binary downloads. - Canonical Domain Move to
wiradelta.com: Update descriptor endpoint, studio links, browser allowlist, About pane text, and support address all move towiradelta.com(ODR-011). - Settings About and General Pane Copy: Word-for-word alignment with approved studio legal specifications, renaming "Support development" to "Send a tip", standardizing hold delay notation to
(100 to 500 ms), and locking all critical legal labels. - Threat Model Alignment: Documented dual outbound network paths, visual switcher window title inspection, and 1 MB log rotation.
- Edge-snap default percentage updated from 50% to 67% (
Ctrl+Alt+Shift+Left/Right/Up/Down). - General Defaults isolation: Restoring General settings to defaults now preserves the Windows auto-start preference.
- Settings window & modal polish: Compact 560px window height, polished About pane card layout cleanly enclosing the Reset button, and redesigned modal confirmation dialog matching Onboarding aesthetics without blue focus outlines.
- Installer safety & downgrade prevention: Inno Setup installer enforces 64-bit HKLM registry checks, strict SemVer downgrade rejection, zero-bundling invariant, and fail-closed process shutdown.
Fixed
- Window candidate filtering: Sanitized switcher candidates to exclude WinUI 3 popup bridges, PopupHost helpers, and invisible assistant windows.
- Start menu suppression during cycling and multi-window blind backward traversal stability.
- Clean retirement of legacy migration shims.
Install with the setup executable or portable archive.
Updating is built in: Settings has a "Check for updates" button. Whichever way
you installed, that button is the update path, and it needs no command line.
The installer places Wira Desk under %ProgramFiles%, which is deliberate and not
configurable to a per-user location. Auto-start runs the daemon elevated at every
logon with no prompt, so a directory only administrators can write is what protects
it. Installing it anywhere a normal user can write turns that into a privilege
escalation route -- see SECURITY.md.
Verify your download against SHA256SUMS before running:
Get-FileHash .\WiraDesk-
0.3.0
-x64-setup.exe -Algorithm SHA256
These binaries are not code-signed, so Windows SmartScreen will warn and the
UAC prompt will show an unverified publisher. See SECURITY.md for what that
does and does not tell you.
Made with Slint (https://slint.dev), used under GPL-3.0-only -- the same
licence this project is released under. See LICENSE and deny.toml for which
branch of Slint's tri-licence applies.
v0.2.0
Added
- Custom-percentage edge snap: snap the active window to a screen edge at a percentage you set
per direction in Settings, instead of the fixed half (Ctrl+Alt+Shift+Left/Right/Up/Down). - Snap to thirds: snap the active window to the left, middle, or right third of the screen
(Ctrl+Alt+1/2/3). - Per-action shortcut on/off: every remappable shortcut — not just Overlapping Stack, previously
the only one with a switch of its own — now has its own enable/disable control in Settings.
Turning one off drops its chord from the keyboard hook entirely, so the key combination reaches
whatever app is focused unchanged, exactly as if Wira Desk were not installed; the stored chord
itself is untouched, and turning the action back on needs no re-entry.
Changed
- The Shortcuts pane is grouped by what an action snaps to: Switching, Snap to half,
Snap to third, Snap to custom, and Resize, move & arrange. The four custom-percentage
rows now sit beside the halves and thirds they resemble instead of under moving windows around,
and a row no longer repeats its group's name — under Snap to custom a row reads "Snap to left
edge". SeeDEC-014. - The Layout pane is gone, and Settings now has four panes: General, Shortcuts, VM &
Exceptions, About. Its one remaining control — the overlapping-stack width percentage — moves
onto the Overlapping Stack row in the Shortcuts pane, beside that action's own shortcut and
its on/off switch, so the setting sits with the action it belongs to. Nothing stored changes and
no value is migrated; the width you had is the width you keep. SeeDEC-014. - A shortcut row shows its description on hover or keyboard focus instead of as a permanently
visible line. Several descriptions were longer than the space they had, so an ellipsis was the
only part of them some rows ever showed; the full text is now readable, and reachable without a
mouse. The row's controls — percentage stepper, chord keycap, and on/off switch — sit on one
vertical centre, and the five groups fit the default window width without sideways scrolling. - If you have bound two actions to the same chord, the one that keeps it may have changed.
Maximize now sits behind every snap variant in the order that resolves a collision, so a snap
action wins where Maximize used to. Nothing is migrated and no chord is renamed; on the shipped
defaults nothing collides, so most installs see no difference. SeeDEC-014for why the order
moved andDEC-009for how a collision is reported. - Overlapping Stack's default shortcut moved from
Ctrl+Alt+Shift+DowntoCtrl+Alt+Shift+S,
freeing the arrow keys underCtrl+Alt+Shiftfor the custom-percentage snap above. See
DEC-011. An install that already customized (or kept) the old default is not migrated; see
the decision for what happens on that chord at startup.
Install with the setup executable, or through winget:
winget install WiraDigitalIndonesia.WiraDesk
Updating is built in: Settings has a "Check for updates" button. Whichever way
you installed, that button is the update path, and it needs no command line.
The installer places Wira Desk under %ProgramFiles%, which is deliberate and not
configurable to a per-user location. Auto-start runs the daemon elevated at every
logon with no prompt, so a directory only administrators can write is what protects
it. Installing it anywhere a normal user can write turns that into a privilege
escalation route -- see SECURITY.md.
Verify your download against SHA256SUMS before running:
Get-FileHash .\WiraDesk-
0.2.0
-x64-setup.exe -Algorithm SHA256
These binaries are not code-signed, so Windows SmartScreen will warn and the
UAC prompt will show an unverified publisher. See SECURITY.md for what that
does and does not tell you.
Made with Slint (https://slint.dev), used under GPL-3.0-only -- the same
licence this project is released under. See LICENSE and deny.toml for which
branch of Slint's tri-licence applies.
v0.1.5
Changed
- License changed from MIT to GPL-3.0-only, across the project and all three workspace crates.
Slint (the Settings UI toolkit) is now consumed under its own GPL-3.0-only branch rather than
the Slint Royalty-free License 2.0, so the mandatory royalty-free-tier disclosure no longer
applies. SeeLICENSE,NOTICE, andREADME.md.
Fixed
- The Key Check pane in Settings now tells a chord swallowed by another program's keyboard hook
apart from the daemon actually being stopped. Previously both showed "Daemon Not Running,"
which pointed you at restarting a daemon that was never the problem.
Install with the setup executable, or through winget:
winget install WiraDigitalIndonesia.WiraDesk
Updating is built in: Settings has a "Check for updates" button. Whichever way
you installed, that button is the update path, and it needs no command line.
The installer places Wira Desk under %ProgramFiles%, which is deliberate and not
configurable to a per-user location. Auto-start runs the daemon elevated at every
logon with no prompt, so a directory only administrators can write is what protects
it. Installing it anywhere a normal user can write turns that into a privilege
escalation route -- see SECURITY.md.
Verify your download against SHA256SUMS before running:
Get-FileHash .\WiraDesk-
0.1.5
-x64-setup.exe -Algorithm SHA256
These binaries are not code-signed, so Windows SmartScreen will warn and the
UAC prompt will show an unverified publisher. See SECURITY.md for what that
does and does not tell you.
Made with Slint (https://slint.dev), used under GPL-3.0-only -- the same
licence this project is released under. See LICENSE and deny.toml for which
branch of Slint's tri-licence applies.
v0.1.4
No functional change from 0.1.3. This version exists to be found: an installed 0.1.3 checking
releases/latest/download/latest.json for the first time against a real newer tag, with no
debug seam or stand-in descriptor involved anywhere -- the last half of gate 2 this repository
had not yet proven for real. See 3p.md for what it verified.
Install with the setup executable, or through winget:
winget install WiraDigitalIndonesia.WiraDesk
Updating is built in: Settings has a "Check for updates" button. Whichever way
you installed, that button is the update path, and it needs no command line.
The installer places Wira Desk under %ProgramFiles%, which is deliberate and not
configurable to a per-user location. Auto-start runs the daemon elevated at every
logon with no prompt, so a directory only administrators can write is what protects
it. Installing it anywhere a normal user can write turns that into a privilege
escalation route -- see SECURITY.md.
Verify your download against SHA256SUMS before running:
Get-FileHash .\WiraDesk-
0.1.4
-x64-setup.exe -Algorithm SHA256
These binaries are not code-signed, so Windows SmartScreen will warn and the
UAC prompt will show an unverified publisher. See SECURITY.md for what that
does and does not tell you.
Made with Slint (https://slint.dev), used under the Slint Royalty-free
License 2.0. That licence requires this disclosure on the page the binaries
are downloaded from, which is this one -- so these two lines are a licence
term, not a credit. See deny.toml for which branch of the licence applies.
v0.1.3
No functional change from 0.1.2. This version exists to run release.yml for the first time
ever — the tag-vs-crate check, the Inno Setup build inside CI, and the real
releases/latest/download/latest.json this repository's own updater will check against, none
of which had executed even once before this tag. A deliberate, disposable step before any
version is promoted as the one people should install; see 3p.md for what it verified.
Install with the setup executable, or through winget:
winget install WiraDigitalIndonesia.WiraDesk
Updating is built in: Settings has a "Check for updates" button. Whichever way
you installed, that button is the update path, and it needs no command line.
The installer places Wira Desk under %ProgramFiles%, which is deliberate and not
configurable to a per-user location. Auto-start runs the daemon elevated at every
logon with no prompt, so a directory only administrators can write is what protects
it. Installing it anywhere a normal user can write turns that into a privilege
escalation route -- see SECURITY.md.
Verify your download against SHA256SUMS before running:
Get-FileHash .\WiraDesk-
0.1.3
-x64-setup.exe -Algorithm SHA256
These binaries are not code-signed, so Windows SmartScreen will warn and the
UAC prompt will show an unverified publisher. See SECURITY.md for what that
does and does not tell you.
Made with Slint (https://slint.dev), used under the Slint Royalty-free
License 2.0. That licence requires this disclosure on the page the binaries
are downloaded from, which is this one -- so these two lines are a licence
term, not a credit. See deny.toml for which branch of the licence applies.
DEV: updater test harness (not a real release)
Not a real Wira Desk release. Hosts a real, checksummed installer asset so the in-app updater's download-and-verify path can be exercised end to end before the first real version is tagged. Marked prerelease so it is never picked up by /releases/latest. Referenced from shared::update's debug-only WIRADESK_DEV_LATEST_JSON_URL seam; see 3p.md, 2026-08-29.