Files
ReactorcoremeltdownandClaude Opus 5.5 ead82dc777 Turn the desktop client into a system tray application
Started without a command, keeporg now shows a padlock in the system tray
with a menu like midi-webhook's: a status line, the mirror folder, each
database with its state, Sync Now, browser sign-in and sign-out, the web
interface, the configuration, the log, Start at Login, About and Quit. The
commands are unchanged.

config.json now carries every client setting (device_label,
request_timeout_seconds, ca_file, log_file, notifications), is written in
full on first start and is reloaded by the tray when saved.

A lock in the mirror directory admits one agent at a time, since the tray,
`keeporg run` and a service unit could otherwise race each other.

The tray uses fyne.io/systray: pure Go on Linux, BSD and Windows, cgo on
macOS only. The server keeps no third-party dependencies.

Desktop versions go to 0.5.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:30:28 +01:00

40 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# Build the macOS disk image: an application bundle beside a symlink to
# /Applications, which is what a user expects to drag.
# build-dmg.sh <version> <arch> <appid> <output.dmg>
set -eu
version=$1
arch=$2
appid=$3
out=$4
if [ "$(uname -s)" != Darwin ]; then
echo "build-dmg.sh: a DMG can only be built on macOS (hdiutil is required)" >&2
echo "the binary itself cross-compiles: make build/darwin-$arch/keeporg" >&2
exit 1
fi
root=$(cd "$(dirname "$0")/.." && pwd)
stage=$root/build/dmg-$arch
app=$stage/KeepOrg.app
rm -rf "$stage"
mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources"
# The bundle runs the client itself: started with no command it is the
# menu-bar application, and the same binary serves `keeporg` in a terminal.
install -m 0755 "$root/build/darwin-$arch/keeporg" "$app/Contents/MacOS/keeporg"
sed -e "s/@VERSION@/$version/" -e "s/@APPID@/$appid/" \
"$root/packaging/macos/Info.plist.in" > "$app/Contents/Info.plist"
iconutil -c icns -o "$app/Contents/Resources/KeepOrg.icns" "$root/build/icons/KeepOrg.iconset"
cp "$root/docs/HANDOVER.md" "$stage/Read me first.md" 2>/dev/null || true
# The symlink every macOS DMG carries, so installing is one drag.
ln -s /Applications "$stage/Applications"
mkdir -p "$(dirname "$out")"
rm -f "$out"
hdiutil create -volname "KeepOrg $version" -srcfolder "$stage" \
-ov -fs HFS+ -format UDZO "$out" >/dev/null
printf 'built %s\n' "$out"