@softspark/jira-mcp 1.0.0 → 1.1.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,40 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v1.1.0 -- Hardening & Market Readiness (2026-04-14)
11
+
12
+ ### Added
13
+ - **Boundary test suite** -- 96 new tests covering `server.ts` (25), `cli/index.ts` (27), and `JiraConnector` (44). Total: 509 tests across 51 files.
14
+ - **Retry/backoff for transient failures** -- `JiraConnector` retries 429 and 503 responses up to 3 times with exponential backoff (1s/2s/4s). Respects `Retry-After` header.
15
+ - **Count validation script** -- `scripts/validate_counts.py` verifies README counts match source code. Enforced in CI via `validate-counts` job.
16
+ - **Count validation in CI** -- new `validate-counts` job in `ci.yml` catches README drift before merge.
17
+ - **ADR-0001** -- documented "hardening before refactor" decision with alternatives and guardrails.
18
+ - **Hardening plan** -- full plan with success criteria and pre-mortem in `kb/planning/`.
19
+
20
+ ### Changed
21
+ - **server.ts refactored** -- 719 → 324 lines (-55%). Tool definitions extracted to `src/tools/definitions.ts`, argument helpers to `src/tools/args.ts`.
22
+ - **Major dependency upgrades** -- TypeScript 5 → 6, ESLint 9 → 10, zod 3 → 4, vitest 3 → 4, @types/node 22 → 25.
23
+ - **TypeScript 6 migration** -- added `types: ["node"]` and `ignoreDeprecations: "6.0"` to tsconfig.
24
+ - **zod 4 migration** -- `.default({})` replaced with factory function in `BulkOptionsSchema`.
25
+ - **vitest 4 migration** -- arrow function mocks replaced with regular function syntax for constructor compatibility.
26
+ - **Bundle size** -- 325KB → 520KB (due to zod 4, which is significantly larger).
27
+ - **README** -- "Zero runtime dependencies" corrected to "Minimal runtime dependencies". Test counts updated.
28
+ - **CONTRIBUTING.md** -- full CI workflow documented, `validate:counts` noted as maintainer-managed.
29
+ - **Coverage exclusions reduced** -- `server.ts` and `jira-connector.ts` removed from vitest exclusion list.
30
+
31
+ ### Security
32
+ - **Cache file permissions** -- all cache writes use `mode: 0o600` (owner-only). Prevents local privilege escalation on shared machines.
33
+ - **CWD config loading warning** -- stderr warning when `config.json` or `credentials.json` loaded from working directory instead of global config.
34
+ - **Error message truncation** -- Jira API error responses truncated to 200 characters to prevent information leakage.
35
+ - **`saveJsonFile` JSDoc** -- `@security` annotation warns against use for sensitive data.
36
+
37
+ ### Documentation
38
+ - **Hardcoded counts removed** from secondary docs (CLAUDE.md, kb/, rules/, copilot-instructions). Counts live only in README (single source of truth pattern from ai-toolkit).
39
+ - **KB docs updated** -- caching.md, architecture.md, configuration.md, troubleshooting/common-issues.md reflect security changes.
40
+ - **Release SOP updated** -- Step 4.5 (validate counts) and Step 3.2 (README "What's New" update) added.
41
+
42
+ ---
43
+
10
44
  ## v1.0.0 -- Initial Public Release (2026-04-14)
11
45
 
12
46
  ### MCP Tools (15)
@@ -27,7 +61,7 @@ Versioning follows [Semantic Versioning](https://semver.org/).
27
61
  - **`create_task`** -- create a new Jira issue with ADF description, assignee, labels, epic link
28
62
  - **`search_tasks`** -- search Jira issues with raw JQL (no caching)
29
63
 
30
- ### CLI Commands (17)
64
+ ### CLI Commands (16)
31
65
 
32
66
  - **`jira-mcp`** / **`jira-mcp serve`** -- start MCP server (stdio transport)
33
67
  - **`jira-mcp config init`** -- initialize global config at `~/.softspark/jira-mcp/`
package/README.md CHANGED
@@ -4,20 +4,19 @@
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.0.0-blue)](CHANGELOG.md)
7
+ [![version](https://img.shields.io/badge/version-1.1.0-blue)](CHANGELOG.md)
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
9
9
 
10
10
  ---
11
11
 
12
- ## What's New in v1.0.0
12
+ ## What's New in v1.1.0
13
13
 
14
- - **15 MCP tools** -- `update_task` for editing issues, `get_project_language` for AI language awareness.
15
- - **Language configuration** -- global `default_language` + per-project override. Supports: pl, en, de, es, fr, pt, it, nl.
16
- - **17 CLI commands** -- `config set-default`, `config set-language`, `config set-project-language` added.
17
- - **Zero runtime dependencies** -- built-in `fetch` client (Jira REST API v3), built-in ADF parsers. Self-contained 325KB bundle.
18
- - **Per-instance credentials** -- different username/token per Jira instance URL (Format A + Format B).
19
- - **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires.
20
- - **413 tests** across 47 test files with strict TypeScript.
14
+ - **Hardening & market readiness** -- boundary tests, retry/backoff, security fixes, server refactor.
15
+ - **509 tests** across 51 test files -- boundary tests for `server.ts`, CLI bootstrap, and `JiraConnector` (96 new tests).
16
+ - **Retry/backoff** -- transient Jira API failures (429, 503) retried up to 3x with exponential backoff.
17
+ - **server.ts refactored** -- 719 324 lines. Tool definitions and argument helpers extracted to dedicated modules.
18
+ - **Major dep upgrades** -- TypeScript 6, ESLint 10, zod 4, vitest 4.
19
+ - **Security hardened** -- cache 0o600, CWD config warning, error truncation, count validation in CI.
21
20
 
22
21
  See [CHANGELOG.md](CHANGELOG.md) for full details.
23
22
 
@@ -163,7 +162,7 @@ Or copy `rules/jira-mcp.md` to your ai-toolkit rules directory manually. The rul
163
162
  - **Sync before read** -- cache may be stale
164
163
  - **Status transitions** -- check valid transitions before changing status
165
164
  - **Time format** -- `"2h 30m"`, never days
166
- - **All 15 MCP tools** and **17 CLI commands** reference
165
+ - **All 15 MCP tools** and **16 CLI commands** reference
167
166
 
168
167
  ## Usage with Other MCP Clients
169
168
 
@@ -219,11 +218,11 @@ src/
219
218
 
220
219
  **Per-instance credentials** -- different API tokens per Jira instance URL. Single-credential format still works (backward compatible). See [Configuration](kb/reference/configuration.md).
221
220
 
222
- **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained 325KB bundle, 1 runtime dep (commander).
221
+ **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained 520KB bundle, 1 runtime dep (commander).
223
222
 
224
223
  **Typed error hierarchy** -- 15 error classes with machine-readable codes. Every tool returns structured `{ success, error, code }` responses. No stack traces leak to MCP clients.
225
224
 
226
- **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 413 tests across 47 test files. Self-contained 325KB package.
225
+ **Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 509 tests across 51 test files. Self-contained 520KB package.
227
226
 
228
227
  ## Documentation
229
228