# M9 (part 1): icon, version stamping, install notes Branch: `m9-packaging` → `main` M9 is "icons, version stamping, builds for the three systems, README with install notes, licence". This PR covers everything except the builds themselves. Those depend on which machines (or GitHub Actions) will build for Windows, Linux and macOS, still to be decided. ## What changed - **App icon:** a 4×4 pad grid in the app's colours, with pad 1 (bottom left, as on the device) lit in the orange accent, on the dark background. It is drawn by a small Go program, `tools/icon`, so it can be changed and regenerated: `go run ./tools/icon build/appicon.png`. - `build/windows/icon.ico` and `build/darwin/icons.icns` are generated from it, as is the macOS disk-image file icon. - The disk-image background (it had the Wails logo) is now plain light grey (`go run ./tools/icon -dmg …`); Finder labels icons there in dark text. - Removed the template's macOS Icon Composer bundle (`build/appicon.icon`) and its compiled `build/darwin/Assets.car`. Both showed the Wails logo, and `Assets.car` takes precedence over `icons.icns` on current macOS. The bundle can only be compiled on macOS 26 with Xcode 26, so the icons task now uses `appicon.png` alone. - **Version stamping:** production builds (`wails3 build`, `wails3 package`) stamp the version and the commit. - About shows "Version 0.5.0" and, on the next line, "Build " (with `-dirty` if the working tree had uncommitted changes). `wails3 dev` still shows `dev`. - The version comes from `APP_VERSION` in `Taskfile.yml`, kept in step with `version` in `build/config.yml`; the commit from `git describe --always --dirty --exclude "*"`. So it doesn't depend on tags. - The Windows file version, macOS bundle version, Linux package version and installer version are now 0.5.0 (were the template's 0.0.1). - **README:** what the app does, the beta note, and install notes per system. Builds are unsigned, so each system warns once: SmartScreen on Windows, "Open Anyway" in Privacy & Security on macOS, `chmod +x` and the GTK 4 / WebKitGTK 6.0 libraries on Linux. Also how versions are stamped and how the icon is made. - **Template leftovers:** removed the unused `build/ios` folder; filled the MSIX manifests' "My Company" / "My Product" placeholders with bajdev / mpckit. - **Licence:** already done (MIT, copyright 2026 bajdev). The About dialog and README already say mpckit is not affiliated with Akai. **Change after the first laptop run** (bajdev, 2026-11-12: the Windows build runs): About showed the commit id instead of 0.5.0, because the first version of the stamping used `git describe --tags` and there are no tags yet. It now shows the version from the Taskfile, with the commit on its own "Build" line. ## Testing On the server: - `go vet` and `go test ./...` pass. - The Taskfile parses (`wails3 task --list-all`). A dry run of the Windows build shows `-X …internal/app.Version=0.5.0 -X …internal/app.Commit=` in the `go build` flags. - A Windows build with `-X …Version=v0.5.0-check` contains that string. - `tools/icon` regenerates `build/appicon.png` byte for byte. **On the laptop:** 1. `wails3 build` produces `bin\mpckit.exe`. Explorer, the taskbar and the window show the new icon (Windows caches icons; if Explorer still shows the old one, rename the file or sign out and back in). 2. Run `bin\mpckit.exe` and open About: "Version 0.5.0", then "Build ". 3. Right-click `mpckit.exe` → Properties → Details: product name mpckit, version 0.5.0, copyright (c) 2026 bajdev. ## Next (M9 part 2) After this is merged: tag `v0.5.0` on the merge commit, build from the tag on each system (Windows laptop, Linux desktop, and a Mac when one is available), and check each build runs and shows "Version 0.5.0" in About. That is M9's done-when. If the repo is mirrored to GitHub, an Actions workflow could build all three instead.