@softspark/jira-mcp 1.16.0 → 1.16.1

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
@@ -7,6 +7,48 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v1.16.1 -- Bad arguments stop answering UNKNOWN_ERROR (2026-09-18)
11
+
12
+ Both packages change in this release.
13
+
14
+ ### Fixed
15
+
16
+ - **Argument checks answer `INVALID_INPUT`.** Every input check in both servers
17
+ raised a bare `Error`, and a tool response takes its `code` only from the
18
+ typed hierarchy, so "you passed both `content` and `storage`" came back as
19
+ `UNKNOWN_ERROR`. That code reads as "something broke", and an agent that sees
20
+ it stops or looks for a way around the server instead of fixing its call. 31
21
+ sites now raise `InvalidInputError`: a missing required argument, two
22
+ arguments that exclude each other, an update that names nothing to change, a
23
+ malformed time (`2d`) or Tempo date, an unknown `group_by`, category or
24
+ `position` value, a file over the upload limit, an unknown tool name. Nothing
25
+ reaches Atlassian when it is raised, and the messages are unchanged.
26
+ - **`TEMPLATE_MISSING_VAR` is real now.** `create_task`,
27
+ `add_templated_comment` and `create_page` answer it when a template is
28
+ rendered without a required variable. The class and its row in the API
29
+ reference had existed since templates shipped, but nothing raised it.
30
+ - **`add_page_inline_comment` answers `ANCHOR_NOT_FOUND`** when
31
+ `text_selection` is not in the page body, instead of `UNKNOWN_ERROR`. Found
32
+ in the 1.16.0 post-release run.
33
+ - A raw NUL byte in a string literal in `tempo-operations.ts` made git and grep
34
+ treat the file as binary: its diffs showed as `Bin` and searches skipped it
35
+ without saying so. It is now the escape `'\u0000'` behind a named constant.
36
+ Behaviour is identical.
37
+ - The README test count had been stale since 1.16.0.
38
+
39
+ ### Added
40
+
41
+ - `packages/core/tests/typed-errors.test.ts` fails the build on a bare
42
+ `new Error(` anywhere a tool call can reach (`src/cli/` is exempt, a CLI error
43
+ goes to a terminal) and on a raw control byte in a source file. It found six
44
+ of the 31 sites on its first run, in the file grep could not read.
45
+
46
+ ### Upgrade note
47
+
48
+ A client that matched on `UNKNOWN_ERROR` to detect a rejected call now sees
49
+ `INVALID_INPUT`, `TEMPLATE_MISSING_VAR` or `ANCHOR_NOT_FOUND` there.
50
+ `UNKNOWN_ERROR` is left for failures nobody anticipated.
51
+
10
52
  ## v1.16.0 -- Creator and reporter on every task read (2026-09-18)
11
53
 
12
54
  `@softspark/confluence-mcp` has no behaviour change in this release; it is bumped
package/README.md CHANGED
@@ -4,14 +4,17 @@
4
4
 
5
5
  [![CI](https://github.com/softspark/jira-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/softspark/jira-mcp/actions/workflows/ci.yml)
6
6
  [![npm](https://img.shields.io/npm/v/@softspark/jira-mcp)](https://www.npmjs.com/package/@softspark/jira-mcp)
7
- [![version](https://img.shields.io/badge/version-1.16.0-blue)](CHANGELOG.md)
7
+ [![version](https://img.shields.io/badge/version-1.16.1-blue)](CHANGELOG.md)
8
8
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
9
9
 
10
10
  ---
11
11
 
12
- ## What's New in v1.16.0
12
+ ## What's New in v1.16.1
13
13
 
14
- - **`creator` and `reporter` on every task read.** `search_tasks`, `get_task_details`, `sync_tasks` and `read_cached_tasks` now say who filed an issue and who it is reported by. Before, neither field reached a response, so "who raised this bug" had no answer.
14
+ - **A rejected call says so.** Every argument check used to answer `UNKNOWN_ERROR`, which reads as "something broke". They now answer `INVALID_INPUT`: a missing argument, `template_id` together with `markdown`, an update with nothing to change, a time like `2d`, a malformed Tempo date or `group_by`. Nothing reaches Jira, and the message names what to pass.
15
+ - A template rendered without a required variable answers `TEMPLATE_MISSING_VAR`, as the API reference always said it did.
16
+ - If a client matched on `UNKNOWN_ERROR` to detect a bad call, match on the new codes instead. `UNKNOWN_ERROR` is left for failures nobody anticipated.
17
+ - **From 1.16.0: `creator` and `reporter` on every task read.** `search_tasks`, `get_task_details`, `sync_tasks` and `read_cached_tasks` now say who filed an issue and who it is reported by. Before, neither field reached a response, so "who raised this bug" had no answer.
15
18
  - Both hold the email, or the display name when Atlassian privacy settings hide the email, and `null` when Jira returns none. To filter by them, use JQL: `creator = "pm@example.com"` or `reporter = currentUser()`.
16
19
  - An existing task cache keeps loading. Rows cached before the upgrade read `null` for both fields until the next `sync_tasks`.
17
20
  - Released together with `@softspark/confluence-mcp` under one version. See the [changelog](CHANGELOG.md).
@@ -288,9 +291,9 @@ src/
288
291
 
289
292
  **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained 561KB library bundle, 1 runtime dep (commander).
290
293
 
291
- **Typed error hierarchy** -- 30 error classes with machine-readable codes. Every tool returns structured `{ success, error, code }` responses. No stack traces leak to MCP clients.
294
+ **Typed error hierarchy** -- 32 error classes with machine-readable codes. Every tool returns structured `{ success, error, code }` responses. No stack traces leak to MCP clients.
292
295
 
293
- **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 1093 tests across 85 test files.
296
+ **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 1109 tests across 86 test files.
294
297
 
295
298
  ## Documentation
296
299