Skip to content

feat(install)!: install from the MSI only, with a new default config - #46

Merged
blendonl merged 1 commit into
mainfrom
feat/msi-installer
Oct 27, 2026
Merged

blendonl merged 1 commit into
mainfrom
feat/msi-installer

Conversation

@blendonl

Copy link
Copy Markdown
Owner

Summary

Installer

  • install.bat, uninstall.bat and the release zip are gone. The only install path is mshell-<version>.msi, built with WiX v5 on a Windows runner (packaging/build-msi.ps1).
  • Per-machine install to C:\Program Files\mshell. Custom Setup features: use as shell, privileged helper task, Windows tweaks, and the bundled mrun, mnotify and mcapture.
  • Upgrades rename the running images to *.old and hand over to the new build without a reboot.
  • Bundled companion versions are pinned in packaging/companions.json with their sha256.
  • The binaries and the MSI are signed when MSHELL_SIGN_PFX_BASE64 / MSHELL_SIGN_PFX_PASSWORD are set.
  • Each release attaches winget manifests (blendonl.mshell), and they are submitted to winget-pkgs when WINGET_TOKEN is set.

mshell

  • config.update downloads the release MSI, checks its sha256, runs it with msiexec /passive and restarts.
  • New config.restart action (mshell.exe --msg restart).
  • --tweaks apply|revert accepts several groups.
  • On first start mshell copies the default config to %APPDATA%\mshell and shows a welcome notification.
  • When a release changes the default config and the user's differs, the new default is copied to init.lua.new and a notification says so. The user's init.lua is never overwritten.

Default init.lua

  • h/j/k/l and the other chords only work while Win is held. A bare Win tap opens a one-shot leader menu: go, send, window, layout, resize, apps, media, session, mshell.
  • Desktop bindings: go Win+1..9, send Win+Shift+1..9, send and follow Win+Ctrl+1..9, last/next/prev, and monitors.
  • Companions are used when installed, with fallbacks: terminal falls back to cmd, mrun to the built-in launcher, mcapture to Windows' snipping overlay. mnotify and mrun --daemon start with the session.
  • Colours are Catppuccin Mocha, matching the palette mrun and mnotify ship with.

Testing

  • make test and make check-config pass. All sources compile for Windows with warnings as errors.
  • The MSI build, its custom actions, signing and winget submission need Windows. The msi job in this PR's CI build checks the first; MANUAL-TESTS.md covers the rest (The installer section).

Before merging

  • Merging releases 0.16.0 as an MSI-only release; existing install.bat users follow INSTALL.md › Coming from install.bat.
  • Signing and winget submission do nothing until their secrets are added.

- Replace install.bat/uninstall.bat and the release zip with a WiX v5 MSI
  built on Windows: per-machine to Program Files, with features for the
  shell value, the helper task, the Windows tweaks and the bundled mrun,
  mnotify and mcapture companions
- Pin the bundled companions in packaging/companions.json with their sha256
- Sign the binaries and the MSI when the signing secrets are set
- Publish winget manifests with each release and submit them when
  WINGET_TOKEN is set
- config.update downloads, verifies and runs the MSI, then restarts
- mshell seeds %APPDATA%\mshell on first start, shows a welcome
  notification, and drops a changed default beside the user's config as
  init.lua.new
- Rewrite the default init.lua: chords only while Win is held, a one-shot
  leader menu on a Win tap, desktop go/send/follow bindings, companion
  integration with fallbacks, and the Catppuccin Mocha palette
- Add config.restart and multi-group --tweaks
@blendonl
blendonl merged commit 78f3581 into main Oct 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant