@softspark/jira-mcp 1.9.0 → 1.11.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,24 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v1.11.0 -- Local audits and private configuration (2026-09-06)
11
+
12
+ - Add text, JSON and SARIF audits for local filesystem permissions and shipped hook ownership.
13
+ - Create new configuration/cache directories with mode 0700 and state files with mode 0600.
14
+ - Complete third-party attribution in NOTICE and require the full applicable module and SOP artifact set in CI.
15
+ - Require behavior, tests and documentation in the same pull request; correct the lockfile-based signature verification procedure.
16
+
17
+ ## v1.10.0 -- Remaining Estimate (2026-09-01)
18
+
19
+ ### Added
20
+
21
+ - **`remaining_estimate` in `update_task`** -- writes `timetracking.remainingEstimate`.
22
+ Jira keeps the two estimates independent: setting `original_estimate` on a parent
23
+ issue leaves its remaining estimate at the old value, so a report that sums
24
+ remaining still showed the pre-edit total. Setting one field does not disturb
25
+ the other, and both can be sent in a single call. Same format and day rejection
26
+ as `original_estimate`.
27
+
10
28
  ## v1.9.0 -- Sub-tasks and Estimates (2026-09-01)
11
29
 
12
30
  ### Added
package/NOTICE CHANGED
@@ -19,6 +19,11 @@ limitations under the License.
19
19
  If you redistribute this software or a derivative of it, Section 4(d) of the
20
20
  License requires you to carry the contents of this NOTICE file with it.
21
21
 
22
+ This NOTICE covers jira-mcp only. Third-party dependencies, including code
23
+ bundled into dist/, retain their own copyright notices and licenses. Consult
24
+ package-lock.json for exact dependency versions and each dependency's LICENSE
25
+ and NOTICE files for its terms; npm ls --all lists the installed dependencies.
26
+
22
27
  --------------------------------------------------------------------------------
23
28
 
24
29
  PRIOR LICENSE
package/README.md CHANGED
@@ -4,20 +4,16 @@
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.11.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.11.0
13
13
 
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
-
18
- See [CHANGELOG.md](CHANGELOG.md) for full details.
19
-
20
- ---
14
+ - `jira-mcp audit --json` and `--sarif` inspect local permissions and the shipped comment hook without contacting Jira.
15
+ - New configuration/cache directories are private, and the state file is created with mode 0600.
16
+ - CI checks the complete applicable module artifact and SOP set. Documentation changes travel with their behavior changes.
21
17
 
22
18
  ## Table of Contents
23
19
 
@@ -71,6 +67,7 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
71
67
  |---------|-------------|
72
68
  | `jira-mcp` | Start MCP server (default) |
73
69
  | `jira-mcp serve` | Start MCP server (explicit) |
70
+ | `jira-mcp audit [--json\|--sarif]` | Audit local permissions and shipped hook ownership without contacting Jira |
74
71
  | `jira-mcp create <path>` | Create tasks from config file (dry-run by default) |
75
72
  | `jira-mcp create-monthly` | Create monthly admin tasks from built-in templates |
76
73
  | `jira-mcp template add <type> <path>` | Install a template override from a local markdown file |
@@ -97,7 +94,7 @@ All configuration lives in `~/.softspark/jira-mcp/` (created by `jira-mcp config
97
94
  | `sync_tasks` | Sync tasks from Jira to local cache | `project_key?`, `jql?` |
98
95
  | `read_cached_tasks` | Read tasks from cache without hitting Jira | `task_key?` |
99
96
  | `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?` |
97
+ | `update_task` | Update existing issue fields (markdown → ADF) | `task_key`, `summary?`, `description?`, `priority?`, `labels?`, `original_estimate?`, `remaining_estimate?` |
101
98
  | `add_task_comment` | Add a markdown comment (auto-converted to ADF) | `task_key`, `comment`, `user_approved` |
102
99
  | `delete_task` | Delete a task, only when the authenticated user is the task creator | `task_key`, `user_approved` |
103
100
  | `delete_comment` | Delete a comment, only when the authenticated user is the comment author | `task_key`, `comment_id`, `user_approved` |
@@ -183,7 +180,7 @@ Or copy `rules/jira-mcp.md` to your ai-toolkit rules directory manually. The rul
183
180
  - **Sync before read** -- cache may be stale
184
181
  - **Status transitions** -- check valid transitions before changing status
185
182
  - **Time format** -- `"2h 30m"`, never days
186
- - **All 19 MCP tools** and **20 CLI commands** reference
183
+ - **All 19 MCP tools** and **21 CLI commands** reference
187
184
 
188
185
  ### AI Toolkit Hooks
189
186
 
@@ -252,17 +249,18 @@ src/
252
249
 
253
250
  **Per-instance credentials** -- different API tokens per Jira instance URL. Single-credential format still works (backward compatible). See [Configuration](kb/reference/configuration.md).
254
251
 
255
- **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained 535KB bundle, 1 runtime dep (commander).
252
+ **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained 540KB library bundle, 1 runtime dep (commander).
256
253
 
257
254
  **Typed error hierarchy** -- 20 error classes with machine-readable codes. Every tool returns structured `{ success, error, code }` responses. No stack traces leak to MCP clients.
258
255
 
259
- **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 680 tests across 65 test files. Self-contained 535KB package.
256
+ **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 710 tests across 67 test files.
260
257
 
261
258
  ## Documentation
262
259
 
263
260
  | Document | Description |
264
261
  |----------|-------------|
265
262
  | [Architecture](kb/reference/architecture.md) | System design and module overview |
263
+ | [Local audit](kb/reference/audit.md) | JSON/SARIF formats, filesystem checks and hook permissions |
266
264
  | [API Reference](kb/reference/api.md) | All 19 MCP tools with schemas |
267
265
  | [Configuration](kb/reference/configuration.md) | Config files, env vars, multi-instance |
268
266
  | [ADF Format](kb/reference/adf.md) | Atlassian Document Format conversion |