Skip to content

Releases: alexander-zierhut/agent-tool-openproject-cli

v0.5.4

Choose a tag to compare

@github-actions github-actions released this 20 Jul 15:22
0845e98

Full Changelog: v0.5.3...v0.5.4

Full Changelog: v0.5.3...v0.5.4

Full Changelog: v0.5.3...v0.5.4

Full Changelog: v0.5.3...v0.5.4

v0.5.3

Choose a tag to compare

@github-actions github-actions released this 20 Jul 13:55
4beb8b5

Full Changelog: v0.5.2...v0.5.3

Full Changelog: v0.5.2...v0.5.3

Full Changelog: v0.5.2...v0.5.3

Full Changelog: v0.5.2...v0.5.3

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 18 Jul 21:45
90cc99d

Full Changelog: v0.5.1...v0.5.2

Full Changelog: v0.5.1...v0.5.2

Full Changelog: v0.5.1...v0.5.2

Full Changelog: v0.5.1...v0.5.2

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 17 Jul 19:59
f088610

Full Changelog: v0.4.1...v0.5.1

Full Changelog: v0.4.1...v0.5.1

Full Changelog: v0.4.1...v0.5.1

Full Changelog: v0.4.1...v0.5.1

v0.4.1 — bugfix: silent wrong-file write on `attach download`

Choose a tag to compare

@github-actions github-actions released this 16 Jul 19:08

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. -O is 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 asked

Other fixes

  • make test-unit ran 30 of 144 hermetic tests while advertising the full set.
  • Emitter.message() used a denylist that would have printed prose into csv/markdown output, corrupting both.
  • README now opens with a Contributing quickstart: pip install -e '.[test]' && pytest144 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-cli

Full Changelog: v0.4.0...v0.4.1

v0.4.0 — install into Claude Code

Choose a tag to compare

@alexander-zierhut alexander-zierhut released this 16 Jul 07:49
9bd91be

v0.4.0 — install into Claude Code

pipx install -U agent-tool-openproject-cli
openproject install claude      # Claude now auto-uses this CLI for OpenProject work
  • 🤖 openproject install claude — registers a Claude Code skill at ~/.claude/skills/openproject/SKILL.md, the idiomatic discovery mechanism: Claude auto-invokes the CLI whenever you mention OpenProject. The skill points at openproject guide, so Claude learns the tool from the tool and never goes stale.
    • --print preview · --memory also hint in ~/.claude/CLAUDE.md · --project install into this repo's .claude/ · --uninstall (fully reversible) · --force
  • 🔎 First-run offer — on the first interactive run, if Claude Code is detected, the CLI offers to install the skill (once; declining changes nothing). Never prompts when running under Claude Code or in pipelines.
  • 📓 AGENTS.md — full session-context section for agents (how sticky defaults apply, and the safety rules).

Everything from v0.3.0 included (--dry-run, CSV/--stream, retries, detailed cost export with time-entry custom fields, session context).

Tested against OpenProject 13–17 · 242 tests green · standalone binaries for Linux/macOS/Windows attached.

Full Changelog: v0.3.0...v0.4.0

Full Changelog: v0.3.0...v0.4.0

Full Changelog: v0.3.0...v0.4.0

v0.3.0 — dry-run, CSV/stream, retries, detailed cost export, session context

Choose a tag to compare

@alexander-zierhut alexander-zierhut released this 15 Jul 17:48
7c71adf

v0.3.0 — power features for automation & invoicing

pipx install agent-tool-openproject-cli    # or: pip install -U agent-tool-openproject-cli
  • 🧪 --dry-run — any mutating command prints the exact request it would send (names resolved, lockVersion filled) and exits without touching the server.
  • 📤 CSV output (-o csv) and --stream (NDJSON, one object per line) for spreadsheets and large result sets. Both honour --fields.
  • 💶 Detailed cost exportcost report --detailed emits one row per time entry including time-entry custom fields, CSV-exportable for invoicing (OpenProject's own reports can't). time add/edit gained --custom-fields.
  • 🔁 Retry/backoff — the client retries transient failures (429 + 5xx on reads) with backoff, honoring Retry-After.
  • 🧭 Session contextopenproject context set --project X --assignee me gives sticky defaults reused by later commands (explicit flags win; --no-context bypasses; context save/use for named contexts).
  • Confirmed the OpenProject cost-report API doesn't exist in v3; the client-side report is the substitute.

Tested against OpenProject 13–17. 235 tests (unit + integration) green in CI. Standalone binaries for Linux/macOS/Windows attached below.

Full Changelog: v0.2.1...v0.3.0

Full Changelog: v0.2.1...v0.3.0

Full Changelog: v0.2.1...v0.3.0

v0.2.1 — first PyPI release

Choose a tag to compare

@alexander-zierhut alexander-zierhut released this 15 Jul 15:15
bdc2304

v0.2.1 — now on PyPI 🎉

pipx install agent-tool-openproject-cli    # installs the `openproject` command

The distribution is published as agent-tool-openproject-cli (the name openproject-cli was already taken on PyPI); the installed command is unchanged: openproject.

Includes everything from v0.2.0 — the built-in openproject guide, self-documenting help, --version, three output formats, --fields, discoverable search, and per-person cost reporting. Also available as standalone binaries (attached below) for Linux/macOS/Windows.

Full Changelog: v0.2.0...v0.2.1

Full Changelog: v0.2.0...v0.2.1

Full Changelog: v0.2.0...v0.2.1

Full Changelog: v0.2.0...v0.2.1

v0.2.0 — self-documenting (built-in guide)

Choose a tag to compare

@alexander-zierhut alexander-zierhut released this 15 Jul 14:49
96d1092

What's new in v0.2.0

Focus: make the CLI self-documenting so agents (and humans) can use it without any external context.

  • 🧭 openproject guide — a built-in operating manual: output contract, auth, name resolution, filter discovery, and gotchas, plus per-topic cheat-sheets (guide search, guide wp, guide time, guide costs, …).
  • 🆘 Self-documenting help — root --help now signposts guide and search fields; the trickiest commands (wp create/update, comment edit, time add, member add, raw patch) carry examples and gotchas inline.
  • 🔖 --version / -V flag.
  • 📦 Release workflow now attaches each platform binary independently (a slow/queued runner no longer blocks the others).

215-test suite (unit + integration) green in CI against a live OpenProject instance.

Install

pipx (recommended):

pipx install https://github.com/alexander-zierhut/agent-tool-openproject-cli/releases/download/v0.2.0/openproject_cli-0.2.0-py3-none-any.whl

Single binary (no Python) — download openproject-linux-x86_64 (macOS/Windows attached by CI), then:

chmod +x openproject-linux-x86_64 && mv openproject-linux-x86_64 /usr/local/bin/openproject
openproject guide      # learn the tool from the tool

See the README and AGENTS.md.

v0.1.0 — agent-ready OpenProject CLI

Choose a tag to compare

@alexander-zierhut alexander-zierhut released this 15 Jul 13:21
73698e3

First release of openproject-cli — an agent-ready command-line interface for OpenProject (REST API v3).

Highlights

  • Work packages: create, update, delete, move, assign, watch, schema discovery
  • Discoverable search: plain flags (--mine, --overdue, --updated-since 7d), presets (search mine), --where expressions, and search fields|operators|values
  • Projects, comments, time entries, notifications, wiki, attachments + Nextcloud file links
  • Per-person time & cost reporting for monthly invoicing
  • 3 output formats (json/table/markdown), --fields selection, secure OS-keyring credentials
  • 208-test suite (unit + integration) run against a live OpenProject instance

Install

pipx (recommended):

pipx install https://github.com/alexander-zierhut/agent-tool-openproject-cli/releases/download/v0.1.0/openproject_cli-0.1.0-py3-none-any.whl

Single binary (no Python needed) — download openproject-linux-x86_64, then:

chmod +x openproject-linux-x86_64 && mv openproject-linux-x86_64 /usr/local/bin/openproject
openproject --help

macOS/Windows binaries are attached by CI. See the README and AGENTS.md.