v2.4.0
Added
- Yamete+ rebrand for the Direct download. The notarised
Developer-ID-signed download is now named Yamete+ instead of
"Yamete Direct". The bundle isYamete+.app, the executable is
yamete-plus, the bundle identifier is
com.studnicky.yamete.plus, the DMG asset isYamete+.dmg. The
App Store variant keeps its existingYamete/com.studnicky.yamete
identity. The menu's header title now reads "Yamete+" with a pink
+glyph for Direct builds; App Store renders an unmarked
"Yamete". The previous footer build-variant pill is gone — the
header carries the indicator. - Footer reorganisation. Footer cells render as a single
priority-ordered list flowing column-major into a 2-column grid:
Debug Logging (Direct only) → Launch at Login → Version → Reset
Settings → Info Links → Quit. With Debug Logging absent (App
Store), Launch at Login slides into the top-left slot. The
central inter-column divider that read as a table border is gone.
Changed
- Auto-update path from "Yamete Direct" to "Yamete+". Existing
pre-2.4.0 installs auto-update through their legacyYamete.Direct.dmg
asset name, which the 2.4.0 release publishes as a transitional
alias alongside the canonicalYamete+.dmg. After the update
installs, a one-shot bundle-relocation step at app launch detects
the legacy/Applications/Yamete Direct.apppath, copies the
bundle to/Applications/Yamete+.app, removes the legacy bundle,
and relaunches from the canonical path. UserDefaults migrate from
com.studnicky.yamete.directtocom.studnicky.yamete.pluson
first launch under the new identifier — every existing setting
carries over. Input Monitoring TCC grants do not carry over
(macOS scopes them per-bundle-identifier); the diagnostics row
surfaces the missing-permission state with an "Open System
Settings…" deep-link the moment a feature that needs it is used. - List containers drop their wrapping background. The faint
grey rounded-rect around DeviceToggleList, SelectionList, and
NotificationLocalePicker is gone; per-row dividers carry the
"this is a list" affordance. Diagnostics pills lose their stroke
for the same reason — the tinted fill is enough. - Pre-push hook auto-refreshes host-app snapshot baselines. New
scripts/refresh-host-app-snapshots.shruns only for pushes to
release/*andhotfix/*branches; it wipes the sandbox-mirror
at~/Library/Containers/com.studnicky.yamete/Data/tmp/yamete-snapshots/HostApp/,
invokesmake test-host-apptwice (recording iteration tolerates
the standard ".missing"-mode failures, verification iteration
must pass clean), and syncs freshly-recorded baselines back to
Tests/__Snapshots__/HostApp/SnapshotUI_Tests/. If the source
tree moved, the push is refused with a clear "stage and commit
these and re-push" message. Feature branches and CI self-skip.
SHA256: 44d7525ce1a6a50fa2e6c59ee1f08a862c2c53138ce12f591a3d6d7a1faeb8db