Introduce built-in launchd management to remove shell-wrapper indirection and
make macOS autostart reliable.
- Add `install-launchagent` and `uninstall-launchagent` CLI subcommands.
- Create launchd helper module to:
- write `~/Library/LaunchAgents/<label>.plist`
- invoke app via `sys.executable -m mpd_now_playable.cli` (absolute interpreter path)
- set `RunAtLoad`, `KeepAlive`
- run `launchctl bootout/bootstrap/kickstart` for install and `bootout` for uninstall
- support `--label` and `--force`
- Add tests for subcommand dispatch, plist generation, and launchctl flow.
- Document the new launchd workflow in README.
- Run markdownlint
This keeps the setup DRY/KISS, avoids PATH/shell expansion pitfalls in launchd,
and gives users a supported and easy autostart path out of the box.
Runs mypy and ruff. Add basic test.
- Update pyproject.toml dependencies groups
- PDM can use top-level [dependency-groups] (PEP 735), support was added in pdm 2.20.0 (October 2024)
- Fix Ruff warnings