v0.4.1 — bugfix: silent wrong-file write on `attach download`
Bugfix release. No new features; one real bug with a silent failure mode.
Fixed
attach download --output PATH wrote to the wrong file, silently, with exit 0.
--output/-o is a global flag (output format) that the CLI strips from anywhere on the command line — so attach download's own --output was consumed before the command ever saw it. The chain: the path got read as a format → coercion failed → the error was swallowed → the format degraded to json → download() received no path → the file landed in the current directory under its original name, and the CLI exited 0.
- The option is now
--out.-Ois unchanged and always worked. - This is not a breaking change — the long form never worked in any release.
openproject attach download 42 --out ./report.pdf # now lands where you askedOther fixes
make test-unitran 30 of 144 hermetic tests while advertising the full set.Emitter.message()used a denylist that would have printed prose intocsv/markdownoutput, corrupting both.- README now opens with a Contributing quickstart:
pip install -e '.[test]' && pytest— 144 passed, 103 skipped in ~2s, with no OpenProject, no Docker and no token. The full stack is documented as the deeper tier, not a prerequisite.
Added
tests/test_globals_unit.py — walks all 94 commands and fails if any declares an option in the reserved global namespace, so this class of bug can't return. It reserves only the flags actually stripped from argv: --version, --profile and --no-color are ordinary root options that a subcommand may legitimately shadow (verified: wp list --version "Sprint 3" and raw get x -p k=v both work).
Verified
246 passed / 1 skipped against a live OpenProject 15; CI green on Python 3.10–3.12 plus a live-instance integration job. The --out path was additionally confirmed by hand end-to-end: upload → download to an explicit path → correct contents, nothing left in the working directory.
pipx install -U agent-tool-openproject-cliFull Changelog: v0.4.0...v0.4.1