@softspark/jira-mcp 1.9.0 → 1.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
@@ -7,6 +7,17 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v1.10.0 -- Remaining Estimate (2026-09-01)
11
+
12
+ ### Added
13
+
14
+ - **`remaining_estimate` in `update_task`** -- writes `timetracking.remainingEstimate`.
15
+ Jira keeps the two estimates independent: setting `original_estimate` on a parent
16
+ issue leaves its remaining estimate at the old value, so a report that sums
17
+ remaining still showed the pre-edit total. Setting one field does not disturb
18
+ the other, and both can be sent in a single call. Same format and day rejection
19
+ as `original_estimate`.
20
+
10
21
  ## v1.9.0 -- Sub-tasks and Estimates (2026-09-01)
11
22
 
12
23
  ### Added
package/README.md CHANGED
@@ -4,16 +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.9.0-blue)](CHANGELOG.md)
7
+ [![version](https://img.shields.io/badge/version-1.10.0-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.9.0
12
+ ## What's New in v1.10.0
13
13
 
14
+ - **`update_task` sets the remaining estimate.** `remaining_estimate` writes `timetracking.remainingEstimate`. Jira holds the two estimates apart, so lowering a parent's original estimate left remaining untouched and any report summing remaining kept showing the old total.
14
15
  - **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.
16
+ - **Original estimate is settable.** `create_task` and `update_task` take `original_estimate` and write `timetracking.originalEstimate`. `log_task_time` records work already done, which is a separate field.
17
+ - **One time format everywhere.** Estimates go through the same parser as `log_task_time`: `"2h"`, `"30m"`, `"2h 30m"`, and days are rejected.
17
18
 
18
19
  See [CHANGELOG.md](CHANGELOG.md) for full details.
19
20
 
@@ -97,7 +98,7 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
97
98
  | `sync_tasks` | Sync tasks from Jira to local cache | `project_key?`, `jql?` |
98
99
  | `read_cached_tasks` | Read tasks from cache without hitting Jira | `task_key?` |
99
100
  | `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?`, `original_estimate?` |
101
+ | `update_task` | Update existing issue fields (markdown → ADF) | `task_key`, `summary?`, `description?`, `priority?`, `labels?`, `original_estimate?`, `remaining_estimate?` |
101
102
  | `add_task_comment` | Add a markdown comment (auto-converted to ADF) | `task_key`, `comment`, `user_approved` |
102
103
  | `delete_task` | Delete a task, only when the authenticated user is the task creator | `task_key`, `user_approved` |
103
104
  | `delete_comment` | Delete a comment, only when the authenticated user is the comment author | `task_key`, `comment_id`, `user_approved` |