@wavyx/pdcli 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,73 @@ All notable changes to `pdcli` are documented here. Format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/); versions follow
5
5
  [SemVer](https://semver.org/).
6
6
 
7
+ ## [0.10.0] - 2026-06-06
8
+
9
+ ### Added
10
+
11
+ - `deal product list/add/update/remove` — line items on deals at last.
12
+ Cursor-paginated listing with sort options; `add` takes `--product`,
13
+ `--price`, and `--quantity` (default 1) plus discount/tax/comments;
14
+ amounts are validated client-side (exit 64 on garbage). No
15
+ `--duration` flag: product durations were retired by Pipedrive in
16
+ 2024 in favor of billing frequencies.
17
+ - `user list` and `user find <term>` (`--by-email` for exact lookups) —
18
+ every `--owner <id>` flag in the CLI is finally usable without
19
+ copying ids out of the web app.
20
+ - List power-params on `deal`, `person`, `org`, `activity`, and
21
+ `product` lists: `--filter <saved-filter-id>`, `--ids` (max 100),
22
+ `--sort-by`/`--sort-direction`, `--updated-since`/`--updated-until`
23
+ where the endpoint supports them. `--ids` and `--filter` are mutually
24
+ exclusive — the API silently ignores ids when a filter is present.
25
+ - `deal history <id>` — field-change audit trail, newest-first, with
26
+ `--field` filtering and `--resolve-fields` rendering custom-field
27
+ names and option labels.
28
+ - `webhook create --event-object` accepts the six v2 object types added
29
+ for projects and line items (project, task, board, phase,
30
+ deal_product, deal_installment).
31
+ - Daily-budget awareness: a 429 with `x-daily-ratelimit-token-remaining: 0`
32
+ fails fast with a clear message instead of backing off blindly;
33
+ `--verbose` logs the remaining daily token budget on every request.
34
+
35
+ ### Changed
36
+
37
+ - List page size raised from 100 to 500 rows per request (the v2
38
+ maximum) — large pulls use 5x fewer requests and rate-limit tokens.
39
+
40
+ ### Fixed
41
+
42
+ - `activity list --type` never worked against the live API (the v2
43
+ endpoint rejects a `type` query parameter); the flag now filters
44
+ client-side.
45
+
46
+ ## [0.9.0] - 2026-06-05
47
+
48
+ ### Changed
49
+
50
+ - **BREAKING:** `--jq` now receives single records as the bare object
51
+ instead of a one-element array. `pdcli deal get 1 --jq '.id'` works
52
+ directly; scripts using the old `--jq '.[0].id'` form must drop the
53
+ `.[0]`. List output is unchanged (still an array).
54
+ - `--resolve-fields` now also applies to the core list commands (`deal`,
55
+ `person`, `org`, `activity`, `product`) in json/yaml/csv output — one
56
+ field-definitions fetch covers the whole list. (Supersedes the 0.8.0
57
+ note that scoped the flag to single-record gets.)
58
+
59
+ ### Fixed
60
+
61
+ - File uploads, downloads, and form posts now go through the same
62
+ transport pipeline as every other request: 429 backoff honoring
63
+ `x-ratelimit-reset`/`Retry-After`, `--no-retry`, the 429-to-403
64
+ escalation hard stop, 5xx retry, and automatic OAuth token refresh.
65
+ Note: this also means transient 5xx during an upload is retried —
66
+ pass `--no-retry` if duplicate-creation on retry is a concern.
67
+ - Alias mutations take an advisory lock, so concurrent pdcli processes
68
+ no longer overwrite each other's alias changes (last-write-wins data
69
+ loss). Contention exits 75; an unwritable config directory reports a
70
+ clear configuration error (exit 78).
71
+ - A failing command can no longer pass its own happy-path test suite —
72
+ the test harness surfaces command errors instead of swallowing them.
73
+
7
74
  ## [0.8.0] - 2026-06-05
8
75
 
9
76
  ### Added
package/README.md CHANGED
@@ -42,6 +42,8 @@ pdcli note list --deal 42
42
42
  pdcli pipeline list && pdcli stage list --pipeline 1
43
43
  pdcli search "acme"
44
44
  pdcli field list deal # custom fields with their hash keys
45
+ pdcli user list # resolve owner IDs to names
46
+ pdcli deal history 42 # field-change audit trail: who changed what, when
45
47
  ```
46
48
 
47
49
  Output everywhere: `--output table|json|yaml|csv`, `--jq '<expr>'`, `--fields id,name`.
@@ -63,6 +65,13 @@ pdcli deal create --title "Sized" --field "Deal Size=Large" --field "Score=4.5"
63
65
  pdcli deal update 42 --body '{"probability":75}' # raw JSON escape hatch
64
66
  ```
65
67
 
68
+ ## Line items
69
+
70
+ ```bash
71
+ pdcli deal product add 42 --product 10 --price 150 --quantity 4 # attach a product to a deal
72
+ pdcli deal product list 42 # lines, with server-computed sums
73
+ ```
74
+
66
75
  ## Bulk
67
76
 
68
77
  ```bash