@softspark/jira-mcp 1.8.0 → 1.9.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 +26 -0
- package/README.md +7 -7
- package/dist/cli.js +33 -33
- package/dist/index.js +36 -36
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,32 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v1.9.0 -- Sub-tasks and Estimates (2026-09-01)
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`parent_key` in `create_task`** -- sets the Jira `parent` field so sub-tasks can be
|
|
15
|
+
created at all. `epic_key` resolves the Epic Link custom field, which is a different
|
|
16
|
+
field, so passing it for a sub-task made Jira answer with
|
|
17
|
+
`Issue type is a sub-task but parent issue key or id not specified`.
|
|
18
|
+
- **`original_estimate` in `create_task` and `update_task`** -- writes
|
|
19
|
+
`timetracking.originalEstimate`. Estimates could only be set by hand in the Jira UI
|
|
20
|
+
before; `log_task_time` logs work already done, which is a different field.
|
|
21
|
+
Accepts the same `"2h"` / `"30m"` / `"2h 30m"` format as `log_task_time` and rejects
|
|
22
|
+
days through the same parser.
|
|
23
|
+
|
|
24
|
+
## v1.8.1 -- Duplicate Detection (2026-08-03)
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- **Duplicate detection never matched anything.** `findExistingTask` searched with
|
|
29
|
+
`summary = "..."`, but `summary` is a text field and JQL only supports `~` on it.
|
|
30
|
+
Jira answers `=` with an empty result set instead of an error, so every lookup
|
|
31
|
+
reported "not found": `update_existing` never updated, and re-running a bulk config
|
|
32
|
+
created a second copy of every task. The lookup now uses a quoted `~` phrase and
|
|
33
|
+
compares the returned summary exactly, since `~` is a fuzzy match. Found by running
|
|
34
|
+
a config twice against a live instance and getting a duplicate issue.
|
|
35
|
+
|
|
10
36
|
## v1.8.0 -- Status Paths (2026-08-03)
|
|
11
37
|
|
|
12
38
|
### Added
|
package/README.md
CHANGED
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/softspark/jira-mcp/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/@softspark/jira-mcp)
|
|
7
|
-
[](CHANGELOG.md)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
## What's New in v1.
|
|
12
|
+
## What's New in v1.9.0
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
- **
|
|
16
|
-
-
|
|
14
|
+
- **Sub-tasks can be created.** `create_task` takes `parent_key`, which sets the Jira `parent` field. `epic_key` writes the Epic Link custom field instead, so a sub-task sent with it came back as `Issue type is a sub-task but parent issue key or id not specified`.
|
|
15
|
+
- **Original estimate is settable.** `create_task` and `update_task` take `original_estimate` and write `timetracking.originalEstimate`. Estimates previously had to be typed into the Jira UI by hand -- `log_task_time` records work already done, which is a separate field.
|
|
16
|
+
- **One time format everywhere.** `original_estimate` goes through the same parser as `log_task_time`: `"2h"`, `"30m"`, `"2h 30m"`, and days are rejected.
|
|
17
17
|
|
|
18
18
|
See [CHANGELOG.md](CHANGELOG.md) for full details.
|
|
19
19
|
|
|
@@ -97,7 +97,7 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
|
|
|
97
97
|
| `sync_tasks` | Sync tasks from Jira to local cache | `project_key?`, `jql?` |
|
|
98
98
|
| `read_cached_tasks` | Read tasks from cache without hitting Jira | `task_key?` |
|
|
99
99
|
| `update_task_status` | Change task status via workflow transition | `task_key`, `status` |
|
|
100
|
-
| `update_task` | Update existing issue fields (markdown → ADF) | `task_key`, `summary?`, `description?`, `priority?`, `labels?` |
|
|
100
|
+
| `update_task` | Update existing issue fields (markdown → ADF) | `task_key`, `summary?`, `description?`, `priority?`, `labels?`, `original_estimate?` |
|
|
101
101
|
| `add_task_comment` | Add a markdown comment (auto-converted to ADF) | `task_key`, `comment`, `user_approved` |
|
|
102
102
|
| `delete_task` | Delete a task, only when the authenticated user is the task creator | `task_key`, `user_approved` |
|
|
103
103
|
| `delete_comment` | Delete a comment, only when the authenticated user is the comment author | `task_key`, `comment_id`, `user_approved` |
|
|
@@ -110,7 +110,7 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
|
|
|
110
110
|
| `list_comment_templates` | List available comment templates | `category?` |
|
|
111
111
|
| `list_task_templates` | List available task templates for `create_task` | — |
|
|
112
112
|
| `add_templated_comment` | Add comment using a template or raw markdown | `task_key`, `template_id?`, `variables?`, `markdown?`, `user_approved` |
|
|
113
|
-
| `create_task` | Create a new Jira issue with explicit fields or a task template | `project_key`, `summary?`, `template_id?`, `variables?`, `description?`, `assignee_email?`, `labels?`, `epic_key?` |
|
|
113
|
+
| `create_task` | Create a new Jira issue with explicit fields or a task template | `project_key`, `summary?`, `template_id?`, `variables?`, `description?`, `assignee_email?`, `labels?`, `epic_key?`, `parent_key?`, `original_estimate?` |
|
|
114
114
|
| `search_tasks` | Search Jira issues with JQL (no caching) | `jql`, `max_results?`, `project_key?` |
|
|
115
115
|
|
|
116
116
|
## Comment Templates
|