mcp-google-api 0.25.0 → 0.26.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
@@ -1,281 +1,266 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.26.1](https://github.com/Ogekuri/mcp-google-api/compare/v0.26.0..v0.26.1) - 2026-11-09
4
+ ### 🚜 Changes
5
+ - add --force forced-reinstall option to --upgrade [useReq] *(upgrade)*
6
+ REQUIREMENTS: add REQ-187..REQ-191 (force option, forced channel commands,
7
+ standard unforced child, help documentation) and PKG-064 (README coverage);
8
+ extend TST-017/TST-023 verification mapping.
9
+ upgradeManager: UPGRADE_FORCE_OPTION, parseUpgradeForce, --force-aware
10
+ parseManagementCommand shapes (any option order), buildDevelopUpgradeCommand
11
+ force flag, ManagementCommandOptions.force, forced/standard update child.
12
+ cli: forward --force to runManagementCommand; help epilog documents it.; tests: force parser/builder/child-spawn coverage (153/153 pass).; README: document --upgrade --develop/--dev and --force; fix stale
13
+ skip-on-latest sentence (REQ-146).
14
+ WORKFLOW/REFERENCES: runtime model and symbol index refreshed.
15
+
16
+ ## [0.26.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.25.0..v0.26.0) - 2026-11-08
17
+ ### 🚜 Changes
18
+ - add opencode CLI support and alphabetical CLI listing [useReq] *(cliTargets)*
19
+ REQ-110/DES-017 updated: opencode joins the supported CLI registry; supported-name listings print alphabetically.; REQ-112/REQ-113 updated: opencode MCP config at ~/.config/opencode/opencode.json (JSON mcp map) and skills at ~/.config/opencode/skills.; REQ-117 updated: show CLI Configuration table covers all seven CLIs in alphabetical order; CLI_TARGETS registry reordered alphabetically.; JSON read-modify-write helpers gained a mapKey parameter (default mcpServers, mcp for opencode) preserving unrelated keys; CliTarget gained jsonMcpMapKey.; Unit suite 146/146 green; behavioral proof verified paths, mcp-map install/uninstall round-trip, and alphabetical show rows.
20
+ - rebuild dist binaries on every launcher run [useReq] *(mcp-google-api.sh)*
21
+ PRJ-019 amended: the dev launcher rebuilds dist from the current sources before every execution and aborts non-zero when the rebuild fails; dependency installs stay explicit (npm ci).; PRJ-022 added: every argument is forwarded unchanged to the rebuilt dist/cli.js with exit-code propagation via exec.; PKG-019 amended: the helper-script no-implicit-install/build rule now carves out the PRJ-018 development launcher.; Build output routes to stderr so the exec'd CLI keeps stdout clean for stdio JSON-RPC framing (CTN-003).; No src/ changes; unit suite 146/146 green; live proof verified rebuild, exit propagation, and JSON-pure stdout.
22
+ - render show tables as box-drawing grid [useReq] *(cliShow)*
23
+ REQ-185 added: the show CLI Configuration and Installation Status tables render as box-drawing grids using the specific border characters.; REQ-186 added: data rows emit without inter-row border lines, with exactly one header separator and a closing bottom border.; renderAsciiTable now builds borders via a parametric borderLine helper (top/header/body/bottom) and pipe-delimited rows; column sizing, cell wrapping, and alignment are unchanged.; WORKFLOW.md TRACE-K and EDGE-06 runtime model updated; REFERENCES.md regenerated; no test files modified.
24
+ - print enable/disable result as human-readable confirmation [useReq] *(cli)*
25
+ PRJ-008 updated: enable and disable join the human-readable stdout operation-report exceptions.; REQ-184 added: enable/disable print a human-readable confirmation naming the resolved CLI and the resulting enabled state, exit 0.; runEnableDisableCliCommand now writes plain-text confirmations on both success branches (state change and idempotent no-op); the unsupported-name JSON stderr diagnostic and exit 2 are unchanged (REQ-110).; WORKFLOW.md TRACE-K and EDGE-06 runtime model updated; REFERENCES.md regenerated; no test files modified.
26
+ - render GitHub probe failure reason in version report [useReq] *(upgradeManager)*
27
+ REQ-181 added: --ver/--version now prints 'GitHub latest: unknown (<reason>)' when the GitHub releases probe fails, <reason> carrying the probe diagnostic message.; REQ-164 updated to reference the REQ-181 failed-probe diagnostic rendering.; probeLatestGitHubVersion embeds the GitHub API error message body field (e.g. HTTP 404 rate limit) via the new tolerant readGitHubErrorDetail helper.; WORKFLOW.md TRACE-L and EDGE-06/EDGE-10 runtime model updated; REFERENCES.md regenerated; no test files modified.
28
+
3
29
  ## [0.25.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.24.0..v0.25.0) - 2026-11-08
4
30
  ### 🐛 Bug Fixes
5
31
  - make doctor spawn tests hermetic with isolated home [useReq] *(cliSpawn)*
6
- - Root cause of the CI-only failure: the doctor spawn test inherited the
7
- - host HOME, so it read the developer machine's real
8
- - ~/.config/mcp-google-api/config.json; locally the real API key made the
9
- - REQ-070 api-key check pass (exit 0), while the clean CI runner had no
10
- - settings file, so doctor correctly exited 1 and the gate failed.
11
- - spawnCli now accepts an injectable HOME override; the doctor success
12
- - test provisions an isolated home with the DES-018 settings fixture and
13
- - a valid-format test key, so local runs reproduce the CI runner state
14
- - exactly and the discrepancy can no longer hide before publication.
15
- - Add a REQ-070 regression pin: doctor exits 1 on a clean isolated home
16
- - without a configured API key (the exact CI failure state).
17
- - Evidence: clean-HOME reproduction exited 1 with api-key fail before the
18
- - fix; after the fix the suite passes 4/4 both with the real and a clean
19
- - HOME; full suite 146/146; local pre-release gate green (exit 0).
20
- - No source changes: doctor clean-env exit-1 behavior is REQ-070-correct.
32
+ Root cause of the CI-only failure: the doctor spawn test inherited the
33
+ host HOME, so it read the developer machine's real
34
+ ~/.config/mcp-google-api/config.json; locally the real API key made the
35
+ REQ-070 api-key check pass (exit 0), while the clean CI runner had no
36
+ settings file, so doctor correctly exited 1 and the gate failed.
37
+ spawnCli now accepts an injectable HOME override; the doctor success
38
+ test provisions an isolated home with the DES-018 settings fixture and
39
+ a valid-format test key, so local runs reproduce the CI runner state
40
+ exactly and the discrepancy can no longer hide before publication.
41
+ Add a REQ-070 regression pin: doctor exits 1 on a clean isolated home
42
+ without a configured API key (the exact CI failure state).
43
+ Evidence: clean-HOME reproduction exited 1 with api-key fail before the
44
+ fix; after the fix the suite passes 4/4 both with the real and a clean
45
+ HOME; full suite 146/146; local pre-release gate green (exit 0).
46
+ No source changes: doctor clean-env exit-1 behavior is REQ-070-correct.
21
47
 
22
48
  ## [0.24.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.23.0..v0.24.0) - 2026-11-08
23
49
  ### ⛰️ Features
24
50
  - add pre-release-check.sh release gate [useReq] *(scripts)*
25
- - Ship scripts/pre-release-check.sh running the release-gating stages
26
- - in mandatory order: publish-version guard, typecheck, unit tests,
27
- - production build, aborting at the first failed stage (PKG-058/059).
28
- - The script exits 0 only when every stage passes, runs from any cwd
29
- - by resolving the repository root, and never installs dependencies
30
- - or publishes (PKG-060).
31
- - Add tests/preReleaseCheck.unit.test.ts (TST-024): static contract on
32
- - stage order, fail-fast wiring, repository-root cd, and no install/
33
- - publish commands, plus a sandbox run proving fail-fast exit 1 on an
34
- - injected failing stage.
35
- - Runtime verification: full run green (guard 0.23.0 publishable,
36
- - typecheck clean, 143/143 unit tests, build success, exit 0); real
37
- - fail-fast observed on a missing-toolchain run (typecheck FAILED ->
38
- - exit 1, later stages skipped).
51
+ Ship scripts/pre-release-check.sh running the release-gating stages
52
+ in mandatory order: publish-version guard, typecheck, unit tests,
53
+ production build, aborting at the first failed stage (PKG-058/059).
54
+ The script exits 0 only when every stage passes, runs from any cwd
55
+ by resolving the repository root, and never installs dependencies
56
+ or publishes (PKG-060).
57
+ Add tests/preReleaseCheck.unit.test.ts (TST-024): static contract on
58
+ stage order, fail-fast wiring, repository-root cd, and no install/
59
+ publish commands, plus a sandbox run proving fail-fast exit 1 on an
60
+ injected failing stage.
61
+ Runtime verification: full run green (guard 0.23.0 publishable,
62
+ typecheck clean, 143/143 unit tests, build success, exit 0); real
63
+ fail-fast observed on a missing-toolchain run (typecheck FAILED ->
64
+ exit 1, later stages skipped).
39
65
 
40
66
  ### 🐛 Bug Fixes
41
67
  - sync package-lock bin path with package.json launcher [useReq] *(packaging)*
42
- - The committed package-lock.json root bin entry still recorded the
43
- - superseded dist/cli.js launcher, so every standard bootstrap
44
- - (npm install) rewrote the tracked lockfile and left a fresh clone dirty.
45
- - Regenerate the lockfile bin entry to bin/mcp-google-api.mjs, matching
46
- - the package.json launcher contract (PRJ-020).
47
- - Add a level-0 regression guard test asserting lockfile/package.json
48
- - bin-map identity to tests/npmPublishContract.unit.test.ts, closing
49
- - the TST-021 coverage gap that let the drift go undetected.
50
- - Evidence: reproducer red on the stale lockfile, green after the fix;
51
- - full suite 138/138 pass, typecheck clean, static analysis clean.
68
+ The committed package-lock.json root bin entry still recorded the
69
+ superseded dist/cli.js launcher, so every standard bootstrap
70
+ (npm install) rewrote the tracked lockfile and left a fresh clone dirty.
71
+ Regenerate the lockfile bin entry to bin/mcp-google-api.mjs, matching
72
+ the package.json launcher contract (PRJ-020).
73
+ Add a level-0 regression guard test asserting lockfile/package.json
74
+ bin-map identity to tests/npmPublishContract.unit.test.ts, closing
75
+ the TST-021 coverage gap that let the drift go undetected.
76
+ Evidence: reproducer red on the stale lockfile, green after the fix;
77
+ full suite 138/138 pass, typecheck clean, static analysis clean.
52
78
 
53
79
  ### 🚜 Changes
54
80
  - gate pipeline on pre-release test checks [useReq] *(release)*
55
- - Add a Pre-release check step to .github/workflows/release-npm.yml
56
- - running scripts/pre-release-check.sh after npm ci and before every
57
- - build, pack, publish, and release-creation step, so versions whose
58
- - tests fail produce no release artifact and are never published
59
- - (PKG-063).
60
- - The gate executes the PKG-058 stages (publish-version guard,
61
- - typecheck, unit tests, build) in fail-fast order (PKG-059) and never
62
- - installs dependencies or publishes (PKG-060).
63
- - Update the workflow header and pack-step comments; the release
64
- - pipeline defines no direct test commands - all test stages live in
65
- - the gate script.
66
- - SRS: add PKG-063 and extend TST-020 with the gate contract.
67
- - Tests: ciContract asserts gate presence, placement, and absence of
68
- - direct test commands; suite 6/6, full suite 145/145.
81
+ Add a Pre-release check step to .github/workflows/release-npm.yml
82
+ running scripts/pre-release-check.sh after npm ci and before every
83
+ build, pack, publish, and release-creation step, so versions whose
84
+ tests fail produce no release artifact and are never published
85
+ (PKG-063).
86
+ The gate executes the PKG-058 stages (publish-version guard,
87
+ typecheck, unit tests, build) in fail-fast order (PKG-059) and never
88
+ installs dependencies or publishes (PKG-060).
89
+ Update the workflow header and pack-step comments; the release
90
+ pipeline defines no direct test commands - all test stages live in
91
+ the gate script.
92
+ SRS: add PKG-063 and extend TST-020 with the gate contract.; Tests: ciContract asserts gate presence, placement, and absence of
93
+ direct test commands; suite 6/6, full suite 145/145.
69
94
  - clean run-created artifacts in pre-release-check [useReq] *(scripts)*
70
- - scripts/pre-release-check.sh now snapshots the repository state before
71
- - the stages and removes on exit every artifact directory the run created
72
- - (e.g. the tsup dist/ tree), on both success and fail-fast paths, so the
73
- - repository is left as found (PKG-061).
74
- - Pre-existing artifact directories are preserved untouched (PKG-062).
75
- - SRS: add PKG-061/PKG-062 and extend TST-024 with the cleanup contract.
76
- - Tests: shared sandbox helper plus two behavioral proofs - run-created
77
- - dist removed on the fail-fast path, pre-existing dist sentinel intact.
78
- - Verification: suite 7/7; full run 145/145 tests with dist removed after
79
- - the run; pre-existing dist preserved in a second scenario; static
80
- - analysis clean; git status clean after every run.
95
+ scripts/pre-release-check.sh now snapshots the repository state before
96
+ the stages and removes on exit every artifact directory the run created
97
+ (e.g. the tsup dist/ tree), on both success and fail-fast paths, so the
98
+ repository is left as found (PKG-061).
99
+ Pre-existing artifact directories are preserved untouched (PKG-062).; SRS: add PKG-061/PKG-062 and extend TST-024 with the cleanup contract.; Tests: shared sandbox helper plus two behavioral proofs - run-created
100
+ dist removed on the fail-fast path, pre-existing dist sentinel intact.
101
+ Verification: suite 7/7; full run 145/145 tests with dist removed after
102
+ the run; pre-existing dist preserved in a second scenario; static
103
+ analysis clean; git status clean after every run.
81
104
 
82
105
  ## [0.23.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.22.0..v0.23.0) - 2026-11-07
83
106
  ### ⛰️ Features
84
107
  - add copilot CLI agent support (DES-017, REQ-110/112/113/117) [useReq] *(cli-targets)*
85
- - Requirements: extend DES-017, REQ-110, REQ-112, REQ-113, REQ-117 with the copilot target
86
- - Source: add COPILOT_TARGET adapter (~/.copilot/mcp.json JSON mcpServers + ~/.copilot/skills) to CLI_TARGETS registry in src/utils/cliTargets.ts
87
- - Docs: README supported-agents list/table and WORKFLOW/REFERENCES runtime model updated
88
- - Verification: eslint/tsc clean, npm test 132/132 pass, enable/show/install runtime smoke on isolated HOME
108
+ Requirements: extend DES-017, REQ-110, REQ-112, REQ-113, REQ-117 with the copilot target; Source: add COPILOT_TARGET adapter (~/.copilot/mcp.json JSON mcpServers + ~/.copilot/skills) to CLI_TARGETS registry in src/utils/cliTargets.ts; Docs: README supported-agents list/table and WORKFLOW/REFERENCES runtime model updated; Verification: eslint/tsc clean, npm test 132/132 pass, enable/show/install runtime smoke on isolated HOME
89
109
 
90
110
  ### 🐛 Bug Fixes
91
111
  - build dist via prepare lifecycle for GitHub installs [useReq] *(packaging)*
92
- - Develop-channel installs (npm install -g github:Ogekuri/mcp-google-api#<tag>,
93
- - REQ-171) packed the fetched git tree without dist/: no build lifecycle ran, so
94
- - every installed package hit the PRJ-021 remediation error and the post-upgrade
95
- - install child failed (evidence: v0.22.4 pack listing had 0 dist entries).
96
- - package.json: declare scripts.prepare = npm run build so npm git-dep
97
- - preparation builds dist/ into the packed tarball (PRJ-020; verified by
98
- - local git-sim packs: 8 dist entries incl. dist/cli.js).
99
- - tests/npmPublishContract.unit.test.ts: add failing-first reproducer test
100
- - pinning the prepare lifecycle contract (no chained installs, PKG-019) and
101
- - restore deterministic pack listing via --ignore-scripts.
102
- - usereq/docs/WORKFLOW.md: document the prepare build inside EDGE-09.
112
+ Develop-channel installs (npm install -g github:Ogekuri/mcp-google-api#<tag>,
113
+ REQ-171) packed the fetched git tree without dist/: no build lifecycle ran, so
114
+ every installed package hit the PRJ-021 remediation error and the post-upgrade
115
+ install child failed (evidence: v0.22.4 pack listing had 0 dist entries).
116
+ package.json: declare scripts.prepare = npm run build so npm git-dep
117
+ preparation builds dist/ into the packed tarball (PRJ-020; verified by
118
+ local git-sim packs: 8 dist entries incl. dist/cli.js).
119
+ tests/npmPublishContract.unit.test.ts: add failing-first reproducer test
120
+ pinning the prepare lifecycle contract (no chained installs, PKG-019) and
121
+ restore deterministic pack listing via --ignore-scripts.
122
+ usereq/docs/WORKFLOW.md: document the prepare build inside EDGE-09.
103
123
  - spawn package-manager child with neutral home cwd [useReq] *(upgrade)*
104
- - Defect: --upgrade (npm and --dev|--develop channels) and --uninstall
105
- - spawned npm from the caller's working directory. When invoked from the
106
- - source checkout of the same package (scripts/mcp-google-api.sh cd's to
107
- - the repo root), npm reconciled the git-ref global install against that
108
- - same-name local project and corrupted reify: TAR_ENTRY_ERROR ENOENT
109
- - floods on hono/@modelcontextprotocol/sdk/@grpc/grpc-js plus a fatal
110
- - lifecycle 'spawn sh ENOENT' (protobufjs) against a cwd deleted
111
- - mid-reify.
112
- - Fix: runPackageManagerCommand spawns the child with cwd = os.homedir()
113
- - (explicit neutral directory, env/prefix unchanged); stdio inheritance,
114
- - exit propagation, and the REQ-128 manual-command hint are unchanged.
115
- - Reproducer test (HDT Level 1) added to tests/upgradeManager.unit.test.ts:
116
- - asserts the child cwd is the user home and never the caller cwd; suite
117
- - went 11 pass / 1 fail before the fix to 136/136 after.
124
+ Defect: --upgrade (npm and --dev|--develop channels) and --uninstall
125
+ spawned npm from the caller's working directory. When invoked from the
126
+ source checkout of the same package (scripts/mcp-google-api.sh cd's to
127
+ the repo root), npm reconciled the git-ref global install against that
128
+ same-name local project and corrupted reify: TAR_ENTRY_ERROR ENOENT
129
+ floods on hono/@modelcontextprotocol/sdk/@grpc/grpc-js plus a fatal
130
+ lifecycle 'spawn sh ENOENT' (protobufjs) against a cwd deleted
131
+ mid-reify.
132
+ Fix: runPackageManagerCommand spawns the child with cwd = os.homedir()
133
+ (explicit neutral directory, env/prefix unchanged); stdio inheritance,
134
+ exit propagation, and the REQ-128 manual-command hint are unchanged.
135
+ Reproducer test (HDT Level 1) added to tests/upgradeManager.unit.test.ts:
136
+ asserts the child cwd is the user home and never the caller cwd; suite
137
+ went 11 pass / 1 fail before the fix to 136/136 after.
118
138
  - report skipped server-start dispatch with build remediation [useReq] *(cli)*
119
- - Root cause of the persistent pi 'MCP connection closed' after the 0.21.0 rename:
120
- - the REQ-114 launcher 'npx -y mcp-google-api start --stdio' resolves a same-name
121
- - local project in the spawn cwd, launching a stale pre-rename dist artifact that
122
- - skips dispatch and exits 0 silently (reproduced: exit 0, zero stdout bytes).
123
- - Add describeUndispatchedServerStart() and handleUndispatchedEntry() to the CLI
124
- - entry gate: server-start-shaped argv that matches no gate rule now emits a JSON
125
- - build-remediation diagnostic on stderr (REQ-094) and exits 1; stdout stays
126
- - JSON-RPC-clean (CTN-003); non-server-start argv keeps the silent exit-0 no-op.
127
- - Extend tests/cliEntryGate.unit.test.ts with failing-first reproducers (3 tests);
128
- - full suite 132/132 green; typecheck, static checks, and build clean.
129
- - Document the stale-artifact remediation in docs/CONFIGURATION.md; update
130
- - WORKFLOW.md TRACE-A/EDGE-06 and regenerate REFERENCES.md.
139
+ Root cause of the persistent pi 'MCP connection closed' after the 0.21.0 rename:
140
+ the REQ-114 launcher 'npx -y mcp-google-api start --stdio' resolves a same-name
141
+ local project in the spawn cwd, launching a stale pre-rename dist artifact that
142
+ skips dispatch and exits 0 silently (reproduced: exit 0, zero stdout bytes).
143
+ Add describeUndispatchedServerStart() and handleUndispatchedEntry() to the CLI
144
+ entry gate: server-start-shaped argv that matches no gate rule now emits a JSON
145
+ build-remediation diagnostic on stderr (REQ-094) and exits 1; stdout stays
146
+ JSON-RPC-clean (CTN-003); non-server-start argv keeps the silent exit-0 no-op.
147
+ Extend tests/cliEntryGate.unit.test.ts with failing-first reproducers (3 tests);
148
+ full suite 132/132 green; typecheck, static checks, and build clean.
149
+ Document the stale-artifact remediation in docs/CONFIGURATION.md; update
150
+ WORKFLOW.md TRACE-A/EDGE-06 and regenerate REFERENCES.md.
131
151
 
132
152
  ### 🚜 Changes
133
153
  - make --upgrade update unconditionally [useReq] *(upgradeManager)*
134
- - --upgrade now reinstalls mcp-google-api@latest in every invocation,
135
- - without any pre-upgrade version comparison (REQ-146 rewrite).
136
- - Removed the pre-upgrade registry necessity check and the
137
- - already-latest skip path (REQ-144, REQ-145, REQ-147 deleted) and the
138
- - pre-upgrade-latest summary shortcut (REQ-181 deleted); REQ-172
139
- - reworded since the comparison no longer exists.
140
- - The summary updated version now comes from the post-upgrade probe
141
- - (REQ-134); unused isUpgradeNecessary removed.
142
- - Requirements, workflow model, and references updated; typecheck and
143
- - 136 unit tests pass.
154
+ --upgrade now reinstalls mcp-google-api@latest in every invocation,
155
+ without any pre-upgrade version comparison (REQ-146 rewrite).
156
+ Removed the pre-upgrade registry necessity check and the
157
+ already-latest skip path (REQ-144, REQ-145, REQ-147 deleted) and the
158
+ pre-upgrade-latest summary shortcut (REQ-181 deleted); REQ-172
159
+ reworded since the comparison no longer exists.
160
+ The summary updated version now comes from the post-upgrade probe
161
+ (REQ-134); unused isUpgradeNecessary removed.
162
+ Requirements, workflow model, and references updated; typecheck and
163
+ 136 unit tests pass.
144
164
  - self-heal npm reify ENOENT in --upgrade [useReq] *(upgradeManager)*
145
- - --upgrade update children (npm and --develop/--dev channels) run with
146
- - captured output echoed on stderr (REQ-125, REQ-171).
147
- - A non-zero exit carrying an ENOENT reify diagnostic triggers one
148
- - tolerated npm uninstall -g clean-slate child plus a single retry,
149
- - repairing corrupted global trees whose dependency lifecycle spawns
150
- - fail like the reported 'spawn sh ENOENT' (REQ-182, REQ-183).
151
- - Requirements, workflow model, and references updated; typecheck and
152
- - 136 unit tests pass.
165
+ --upgrade update children (npm and --develop/--dev channels) run with
166
+ captured output echoed on stderr (REQ-125, REQ-171).
167
+ A non-zero exit carrying an ENOENT reify diagnostic triggers one
168
+ tolerated npm uninstall -g clean-slate child plus a single retry,
169
+ repairing corrupted global trees whose dependency lifecycle spawns
170
+ fail like the reported 'spawn sh ENOENT' (REQ-182, REQ-183).
171
+ Requirements, workflow model, and references updated; typecheck and
172
+ 136 unit tests pass.
153
173
  - resolve npmjs latest via packument manifest [useReq] *(upgradeManager)*
154
- - --ver/--version now probe the npm packument manifest with the
155
- - abbreviated Accept header and print dist-tags.latest (REQ-179, REQ-180).
156
- - --upgrade reports the pre-upgrade npmjs latest as the summary updated
157
- - version and skips the post-upgrade probe when resolved (REQ-181).
158
- - REQUIREMENTS/WORKFLOW/REFERENCES updated; typecheck and 136 unit
159
- - tests pass.
174
+ --ver/--version now probe the npm packument manifest with the
175
+ abbreviated Accept header and print dist-tags.latest (REQ-179, REQ-180).
176
+ --upgrade reports the pre-upgrade npmjs latest as the summary updated
177
+ version and skips the post-upgrade probe when resolved (REQ-181).
178
+ REQUIREMENTS/WORKFLOW/REFERENCES updated; typecheck and 136 unit
179
+ tests pass.
160
180
  - ship mcp-google-api launcher bin with remediation [useReq] *(bin)*
161
- - PRJ-020: the installed mcp-google-api bin executes the packaged
162
- - dist/cli.js Node entry forwarding every argument unchanged with no
163
- - implicit install/build steps (analogous to scripts/mcp-google-api.sh).
164
- - PRJ-021: new launcher bin/mcp-google-api.mjs (realpath-safe package-root
165
- - resolution) prints JSON build-remediation guidance on stderr and exits
166
- - non-zero when dist/cli.js is missing - impossible to deliver from the
167
- - built artifact itself.
168
- - package.json: bin repointed to bin/mcp-google-api.mjs; files allowlist
169
- - ships bin/ (verified in npm pack --dry-run); .gitignore gains !bin/
170
- - exceptions (CTN-010).
171
- - PKG-038 publication fixture updated for the bin/ prefix; verified live:
172
- - launcher forwards (--help, exit 0) and remediates (exit 1, JSON stderr);
173
- - 136/136 tests, typecheck and eslint clean.
181
+ PRJ-020: the installed mcp-google-api bin executes the packaged
182
+ dist/cli.js Node entry forwarding every argument unchanged with no
183
+ implicit install/build steps (analogous to scripts/mcp-google-api.sh).
184
+ PRJ-021: new launcher bin/mcp-google-api.mjs (realpath-safe package-root
185
+ resolution) prints JSON build-remediation guidance on stderr and exits
186
+ non-zero when dist/cli.js is missing - impossible to deliver from the
187
+ built artifact itself.
188
+ package.json: bin repointed to bin/mcp-google-api.mjs; files allowlist
189
+ ships bin/ (verified in npm pack --dry-run); .gitignore gains !bin/
190
+ exceptions (CTN-010).
191
+ PKG-038 publication fixture updated for the bin/ prefix; verified live:
192
+ launcher forwards (--help, exit 0) and remediates (exit 1, JSON stderr);
193
+ 136/136 tests, typecheck and eslint clean.
174
194
  - add develop-channel coverage for --upgrade --dev|--develop [useReq] *(test)*
175
- - TST-023: new test requirement mapping REQ-170/171/172/173/177/178 to
176
- - tests/upgradeManager.unit.test.ts.
177
- - HDT Level 0: buildDevelopUpgradeCommand builds the raw tag install
178
- - command npm install -g github:Ogekuri/mcp-google-api#<tag>.
179
- - HDT Level 1: the develop channel probes only the GitHub releases
180
- - endpoint bypassing the idle cache (REQ-177), spawns the tagged install
181
- - with the raw tag_name (REQ-171), always proceeds even when the probed
182
- - tag equals the installed version (REQ-172), reports the probed version
183
- - in the summary (REQ-173), and fails fast on probe error without
184
- - spawning any child process (REQ-178).
185
- - No src/ changes: verification confirmed the implementation already
186
- - satisfied the request; 135/135 tests, typecheck and eslint clean.
195
+ TST-023: new test requirement mapping REQ-170/171/172/173/177/178 to
196
+ tests/upgradeManager.unit.test.ts.
197
+ HDT Level 0: buildDevelopUpgradeCommand builds the raw tag install
198
+ command npm install -g github:Ogekuri/mcp-google-api#<tag>.
199
+ HDT Level 1: the develop channel probes only the GitHub releases
200
+ endpoint bypassing the idle cache (REQ-177), spawns the tagged install
201
+ with the raw tag_name (REQ-171), always proceeds even when the probed
202
+ tag equals the installed version (REQ-172), reports the probed version
203
+ in the summary (REQ-173), and fails fast on probe error without
204
+ spawning any child process (REQ-178).
205
+ No src/ changes: verification confirmed the implementation already
206
+ satisfied the request; 135/135 tests, typecheck and eslint clean.
187
207
  - move publish guard to tools/ with gitignore exception [useReq] *(tools)*
188
- - Move scripts/check-publish-version.mjs to tools/ (PKG-057 updated):
189
- - the ../package.json resolution keeps working at the same directory
190
- - depth; guard verified executable from the new path (exit 0).
191
- - Wire package.json check:publish-version to the new path; the
192
- - prepublishOnly chain (PKG-005, PKG-017) is unchanged.
193
- - .gitignore: append !tools/ and !tools/**/* at the tail of the
194
- - negated-inclusion included-paths section (CTN-009); git check-ignore
195
- - confirms the guard is version-controlled.
196
- - requirements: scripts/ tree entry reduced to the mcp-google-api.sh
197
- - launcher; tools/ entry added for the publish guard.
208
+ Move scripts/check-publish-version.mjs to tools/ (PKG-057 updated):
209
+ the ../package.json resolution keeps working at the same directory
210
+ depth; guard verified executable from the new path (exit 0).
211
+ Wire package.json check:publish-version to the new path; the
212
+ prepublishOnly chain (PKG-005, PKG-017) is unchanged.
213
+ .gitignore: append !tools/ and !tools/**/* at the tail of the
214
+ negated-inclusion included-paths section (CTN-009); git check-ignore
215
+ confirms the guard is version-controlled.
216
+ requirements: scripts/ tree entry reduced to the mcp-google-api.sh
217
+ launcher; tools/ entry added for the publish guard.
198
218
  - BREAKING CHANGE: remove redundant shell helpers, document HTTP vs stdio [useReq] *(scripts)*
199
- - Delete scripts/build.sh, start-http.sh, start-mcp.sh, test.sh: thin
200
- - wrappers over npm run build/start/test/test:e2e; PKG-019 keeps the
201
- - single npm run verify pipeline and REQ-094 forbids implicit builds.
202
- - scripts/ now holds only mcp-google-api.sh (PRJ-018, PRJ-019) and the
203
- - retained check-publish-version.mjs publish guard: required prepublishOnly
204
- - stage, not an end-user accessory (PKG-057, PKG-005, PKG-017).
205
- - README: new 'stdio vs Streamable HTTP' comparison section (PKG-054,
206
- - PKG-055, PKG-056).
207
- - Remove the obsolete start-mcp.sh remediation test whose subject was
208
- - deleted; no src/ changes, WORKFLOW.md unaffected.
219
+ Delete scripts/build.sh, start-http.sh, start-mcp.sh, test.sh: thin
220
+ wrappers over npm run build/start/test/test:e2e; PKG-019 keeps the
221
+ single npm run verify pipeline and REQ-094 forbids implicit builds.
222
+ scripts/ now holds only mcp-google-api.sh (PRJ-018, PRJ-019) and the
223
+ retained check-publish-version.mjs publish guard: required prepublishOnly
224
+ stage, not an end-user accessory (PKG-057, PKG-005, PKG-017).
225
+ README: new 'stdio vs Streamable HTTP' comparison section (PKG-054,
226
+ PKG-055, PKG-056).
227
+ Remove the obsolete start-mcp.sh remediation test whose subject was
228
+ deleted; no src/ changes, WORKFLOW.md unaffected.
209
229
  - --dev|--develop installs the latest tagged GitHub release [useReq] *(upgrade)*
210
- - REQ-170..173: --upgrade --develop|--dev now selects the latest tagged
211
- - GitHub release regardless of the branch carrying the tag; REQ-177 adds
212
- - the forced releases-API probe bypassing the idle cache gate; REQ-178
213
- - fails fast with a stderr diagnostic and no child spawn on probe failure.
214
- - upgradeManager: GITHUB_UPGRADE_REPOSITORY + buildDevelopUpgradeCommand(tag)
215
- - replace PACKAGE_DEVELOP_UPGRADE_COMMAND; develop branch probes GitHub first,
216
- - installs github:Ogekuri/mcp-google-api#<tag>, and reports the probed version.
217
- - autoUpdate: GitHubLatestVersionProbe ok outcome now carries the raw tag_name.
218
- - cli: help text and dispatch comments document the new channel semantics.
230
+ REQ-170..173: --upgrade --develop|--dev now selects the latest tagged
231
+ GitHub release regardless of the branch carrying the tag; REQ-177 adds
232
+ the forced releases-API probe bypassing the idle cache gate; REQ-178
233
+ fails fast with a stderr diagnostic and no child spawn on probe failure.
234
+ upgradeManager: GITHUB_UPGRADE_REPOSITORY + buildDevelopUpgradeCommand(tag)
235
+ replace PACKAGE_DEVELOP_UPGRADE_COMMAND; develop branch probes GitHub first,
236
+ installs github:Ogekuri/mcp-google-api#<tag>, and reports the probed version.
237
+ autoUpdate: GitHubLatestVersionProbe ok outcome now carries the raw tag_name.; cli: help text and dispatch comments document the new channel semantics.
219
238
  - BREAKING CHANGE: remove legacy exec aliases, placeholder key, entry-gate fallback [useReq] *(cli)*
220
- - BREAKING: exec accepts only canonical maps_ tool names (REQ-073); short/snake_case/batch-geocode-tool aliases removed from EXEC_TOOLS, execTool switch, help examples, and README.
221
- - BREAKING: legacy INSTALL_API_KEY_PLACEHOLDER config value no longer loads as unset (DES-023, REQ-142); empty values still do.
222
- - BREAKING: superseded isRunDirectly basename entry-gate removed; isEntryMainModule() alone decides dispatch.
223
- - DOCTOR_PROBES use canonical tool names; tests canonicalized per user-requested legacy removal.
224
- - Verified: typecheck, static-check clean, npm test 132/132; exec geocode now rejected as unknown tool.
239
+ BREAKING: exec accepts only canonical maps_ tool names (REQ-073); short/snake_case/batch-geocode-tool aliases removed from EXEC_TOOLS, execTool switch, help examples, and README.; BREAKING: legacy INSTALL_API_KEY_PLACEHOLDER config value no longer loads as unset (DES-023, REQ-142); empty values still do.; BREAKING: superseded isRunDirectly basename entry-gate removed; isEntryMainModule() alone decides dispatch.; DOCTOR_PROBES use canonical tool names; tests canonicalized per user-requested legacy removal.; Verified: typecheck, static-check clean, npm test 132/132; exec geocode now rejected as unknown tool.
225
240
  - make --help user-facing and document --develop/--dev [useReq] *(cli)*
226
- - REQ-174: help descriptions limited to user-facing usage; removed internal details (persisted configuration, settings file, dispatch order, dist/cli.js path).
227
- - REQ-175: --upgrade epilog documents the --develop | --dev GitHub develop-branch option.
228
- - REQ-176: --ver described accurately as installed, npmjs-latest, and GitHub-latest versions.
229
- - Verified facts kept: exec alias list (batch-geocode-tool) and search-nearby example params match the schema.
230
- - Verified: static-check clean, npm test 132/132 (help contract REQ-129/130/131 intact).
241
+ REQ-174: help descriptions limited to user-facing usage; removed internal details (persisted configuration, settings file, dispatch order, dist/cli.js path).; REQ-175: --upgrade epilog documents the --develop | --dev GitHub develop-branch option.; REQ-176: --ver described accurately as installed, npmjs-latest, and GitHub-latest versions.; Verified facts kept: exec alias list (batch-geocode-tool) and search-nearby example params match the schema.; Verified: static-check clean, npm test 132/132 (help contract REQ-129/130/131 intact).
231
242
  - add --develop/--dev GitHub develop-branch upgrade channel [useReq] *(upgrade-manager)*
232
- - REQ-170..173: --upgrade accepts --develop with equivalent --dev alias selecting the GitHub develop branch.
233
- - REQ-125/REQ-144 scoped to the default npm channel; develop channel skips the registry gate and already-latest path.
234
- - upgradeManager: UpgradeChannel, PACKAGE_DEVELOP_UPGRADE_COMMAND (npm install -g github:Ogekuri/mcp-google-api#develop), parseUpgradeChannel; parseManagementCommand accepts the --upgrade + --develop/--dev pair.
235
- - Develop-channel summary reports unknown as the updated version; default npm path unchanged.
236
- - WORKFLOW.md TRACE-A/L and EDGE-07/09 updated; REFERENCES.md regenerated.
237
- - Verified: typecheck, static-check clean, npm test 132/132.
243
+ REQ-170..173: --upgrade accepts --develop with equivalent --dev alias selecting the GitHub develop branch.; REQ-125/REQ-144 scoped to the default npm channel; develop channel skips the registry gate and already-latest path.; upgradeManager: UpgradeChannel, PACKAGE_DEVELOP_UPGRADE_COMMAND (npm install -g github:Ogekuri/mcp-google-api#develop), parseUpgradeChannel; parseManagementCommand accepts the --upgrade + --develop/--dev pair.; Develop-channel summary reports unknown as the updated version; default npm path unchanged.; WORKFLOW.md TRACE-A/L and EDGE-07/09 updated; REFERENCES.md regenerated.; Verified: typecheck, static-check clean, npm test 132/132.
238
244
  - encode README header block structure and centered quick index [useReq] *(readme)*
239
- - Add requirements PKG-046..PKG-053: [!CAUTION] pre-header, exact title format, centered badge/description/quick-index/status blocks, fixed H1 section order, quick-start step order.
240
- - Rebuild README header: centered description block (strong summary + br + detail), HTML quick-index anchors now including Requirements, single status+notice centered block.
241
- - No source-code change; WORKFLOW.md runtime model unaffected; REFERENCES.md regenerated unchanged.
242
- - Verified: static-check clean; npm test 132/132 pass.
245
+ Add requirements PKG-046..PKG-053: [!CAUTION] pre-header, exact title format, centered badge/description/quick-index/status blocks, fixed H1 section order, quick-start step order.; Rebuild README header: centered description block (strong summary + br + detail), HTML quick-index anchors now including Requirements, single status+notice centered block.; No source-code change; WORKFLOW.md runtime model unaffected; REFERENCES.md regenerated unchanged.; Verified: static-check clean; npm test 132/132 pass.
243
246
 
244
247
  ## [0.22.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.21.0..v0.22.0) - 2026-11-06
245
248
  ### 🐛 Bug Fixes
246
249
  - symlink-aware main-module gate restores CLI dispatch [useReq] *(cli)*
247
- - The entry gate compared import.meta.url with a string-concatenated file:// argv[1], false for every symlinked launcher (npm global bin links, _npx .bin shims), so a stale pre-rename dist silently exited 0 with no output after the 0.21.0 bin rename; pi reported 'MCP connection closed'.
248
- - Add isEntryMainModule(): symmetric realpathSync comparison of argv[1] and the module URL; name-independent dispatch for symlink launches, false on plain imports.
249
- - Add tests/cliEntryGate.unit.test.ts reproducer (symlink dispatch + direct control); update WORKFLOW.md TRACE-A; regenerate REFERENCES.md.
250
- - Verification: reproducer fails pre-fix and passes post-fix; npm run verify green (typecheck, 135/135 tests, build); eslint clean.
250
+ The entry gate compared import.meta.url with a string-concatenated file:// argv[1], false for every symlinked launcher (npm global bin links, _npx .bin shims), so a stale pre-rename dist silently exited 0 with no output after the 0.21.0 bin rename; pi reported 'MCP connection closed'.; Add isEntryMainModule(): symmetric realpathSync comparison of argv[1] and the module URL; name-independent dispatch for symlink launches, false on plain imports.; Add tests/cliEntryGate.unit.test.ts reproducer (symlink dispatch + direct control); update WORKFLOW.md TRACE-A; regenerate REFERENCES.md.; Verification: reproducer fails pre-fix and passes post-fix; npm run verify green (typecheck, 135/135 tests, build); eslint clean.
251
251
 
252
252
  ### 🚜 Changes
253
253
  - BREAKING CHANGE: remove env-var configuration, add settings commands and readable install report [useReq] *(cli)*
254
- - Remove GOOGLE_MAPS_API_KEY/GOOGLE_MAPS_ENABLED_TOOLS/MCP_SERVER_* env support and all .env/--env-file/setup logic (REQ removed: PRJ-011, CTN-007, CTN-009, REQ-087/088; dotenv dep and .env.example dropped)
255
- - Add tools/host/port config commands persisting enabledTools, host, port in ~/.config/mcp-google-api/config.json (REQ-167/168/169, DES-018)
256
- - install/uninstall now print a human-readable per-CLI activity report (REQ-166); post-upgrade parser updated
257
- - Startup banners identify the app as 'MCP Google API server' (REQ-165)
258
- - README.md documents the standard flow only; CONFIGURATION.md rewritten around the settings file
259
- - Requirements/docs updated (REQ-165..169, TST-022); tests aligned, new cliConfigCommands suite; all 129 unit tests pass
254
+ Remove GOOGLE_MAPS_API_KEY/GOOGLE_MAPS_ENABLED_TOOLS/MCP_SERVER_* env support and all .env/--env-file/setup logic (REQ removed: PRJ-011, CTN-007, CTN-009, REQ-087/088; dotenv dep and .env.example dropped); Add tools/host/port config commands persisting enabledTools, host, port in ~/.config/mcp-google-api/config.json (REQ-167/168/169, DES-018); install/uninstall now print a human-readable per-CLI activity report (REQ-166); post-upgrade parser updated; Startup banners identify the app as 'MCP Google API server' (REQ-165); README.md documents the standard flow only; CONFIGURATION.md rewritten around the settings file; Requirements/docs updated (REQ-165..169, TST-022); tests aligned, new cliConfigCommands suite; all 129 unit tests pass
260
255
 
261
256
  ## [0.21.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.20.0..v0.21.0) - 2026-11-06
262
257
  ### 🚜 Changes
263
258
  - pin release automation compliance to the mcp-google-api npm package [useReq] *(release-npm)*
264
- - Add PKG-045: publish, pack, and release-asset glob derive from the distribution package name mcp-google-api.
265
- - Verified automation compliance: release-npm.yml publishes package.json name, npm pack emits mcp-google-api-<ver>.tgz, asset glob mcp-google-api-*.tgz, .galias.conf regex matches the renamed lockfile; version guard name-agnostic; registry confirms mcp-google-api exists on npmjs.
266
- - Zero superseded-name references in automation paths; REFERENCES.md regenerated unchanged.
267
- - Verification: typecheck clean, static-check clean, 133/133 unit tests pass (ciContract 6/6), build success.
259
+ Add PKG-045: publish, pack, and release-asset glob derive from the distribution package name mcp-google-api.; Verified automation compliance: release-npm.yml publishes package.json name, npm pack emits mcp-google-api-<ver>.tgz, asset glob mcp-google-api-*.tgz, .galias.conf regex matches the renamed lockfile; version guard name-agnostic; registry confirms mcp-google-api exists on npmjs.; Zero superseded-name references in automation paths; REFERENCES.md regenerated unchanged.; Verification: typecheck clean, static-check clean, 133/133 unit tests pass (ciContract 6/6), build success.
268
260
  - add mcp-google-api.sh local launcher mirroring the installed bin [useReq] *(scripts)*
269
- - Add scripts/mcp-google-api.sh named after the installed mcp-google-api distribution bin (PRJ-018).
270
- - Forward every argument unchanged to the local dist/cli.js entry with the full CLI surface; no implicit install/build steps, missing-artifact remediation message instead (PRJ-019, PKG-019).
271
- - Update SRS scripts/ tree comment and requirements; REFERENCES.md regenerated unchanged.
272
- - Verification: static-check clean, 133/133 unit tests pass; launcher guard/help/forwarding functionally verified.
261
+ Add scripts/mcp-google-api.sh named after the installed mcp-google-api distribution bin (PRJ-018).; Forward every argument unchanged to the local dist/cli.js entry with the full CLI surface; no implicit install/build steps, missing-artifact remediation message instead (PRJ-019, PKG-019).; Update SRS scripts/ tree comment and requirements; REFERENCES.md regenerated unchanged.; Verification: static-check clean, 133/133 unit tests pass; launcher guard/help/forwarding functionally verified.
273
262
  - BREAKING CHANGE: rename project to mcp-google-api and widen scope to all Google APIs [useReq] *(pkg)*
274
- - Rename package, bin, CLI script name, npm/GitHub probe endpoints, MCP entry, settings (~/.config/mcp-google-api), and idle cache paths (PRJ-016, REQ-082, 114, 115, 121, 125, 127, 162, 163).
275
- - Widen scope to Google APIs at large with Google Maps as the currently implemented family (PRJ-017, CTN-008, DES-018, DES-021).
276
- - Reword README Acknowledgments to credit CabLate without the superseded name (PKG-044).
277
- - Update SRS, WORKFLOW.md, README/docs, CHANGELOG, release workflow glob, skills, and unit-test assertions; regenerate REFERENCES.md.
278
- - Verification: typecheck clean, static-check clean, 133/133 unit tests pass, build success.
263
+ Rename package, bin, CLI script name, npm/GitHub probe endpoints, MCP entry, settings (~/.config/mcp-google-api), and idle cache paths (PRJ-016, REQ-082, 114, 115, 121, 125, 127, 162, 163).; Widen scope to Google APIs at large with Google Maps as the currently implemented family (PRJ-017, CTN-008, DES-018, DES-021).; Reword README Acknowledgments to credit CabLate without the superseded name (PKG-044).; Update SRS, WORKFLOW.md, README/docs, CHANGELOG, release workflow glob, skills, and unit-test assertions; regenerate REFERENCES.md.; Verification: typecheck clean, static-check clean, 133/133 unit tests pass, build success.
279
264
 
280
265
  ### 📚 Documentation
281
266
  - Update TODO.md file.
@@ -283,36 +268,30 @@
283
268
  ## [0.20.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.19.0..v0.20.0) - 2026-11-05
284
269
  ### 🚜 Changes
285
270
  - GitHub version probe targets the Ogekuri repository [useReq] *(upgrade-manager)*
286
- - Re-point DEFAULT_GITHUB_RELEASES_API_URL (src/utils/autoUpdate.ts) from
287
- - the upstream cablate/mcp-google-map (latest release v0.0.69) to the
288
- - distribution repository Ogekuri/mcp-google-map (latest release v0.19.0),
289
- - fixing the wrong 'GitHub latest:' line of --ver/--version.
290
- - Update REQ-163 to pin the GitHub probe repository to
291
- - Ogekuri/mcp-google-map; sync TRACE-L, external boundaries, and EDGE-10
292
- - in WORKFLOW.md; REFERENCES.md regenerated unchanged.
271
+ Re-point DEFAULT_GITHUB_RELEASES_API_URL (src/utils/autoUpdate.ts) from
272
+ the upstream cablate/mcp-google-map (latest release v0.0.69) to the
273
+ distribution repository Ogekuri/mcp-google-map (latest release v0.19.0),
274
+ fixing the wrong 'GitHub latest:' line of --ver/--version.
275
+ Update REQ-163 to pin the GitHub probe repository to
276
+ Ogekuri/mcp-google-map; sync TRACE-L, external boundaries, and EDGE-10
277
+ in WORKFLOW.md; REFERENCES.md regenerated unchanged.
293
278
 
294
279
  ## [0.19.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.18.0..v0.19.0) - 2026-11-05
295
280
  ### 🚜 Changes
296
281
  - --ver/--version prints installed, npmjs, and GitHub latest versions [useReq] *(upgrade-manager)*
297
- - Rewrite runVersionCommand (REQ-120): concurrent npm-registry and
298
- - GitHub-releases probes bypassing the idle cache gate (REQ-161), printing
299
- - the three-line stdout report: installed version, 'npmjs latest: <v>'
300
- - (REQ-162), 'GitHub latest: <v>' with leading v stripped (REQ-163), and
301
- - 'unknown' placeholders on undeterminable versions (REQ-164).
302
- - Add probeLatestGitHubVersion, GitHubProbeDeps, GitHubLatestVersionProbe,
303
- - and DEFAULT_GITHUB_RELEASES_API_URL to autoUpdate.ts.
304
- - Extract resolveProbeLatestVersion; resolveUpdatedVersion delegates to it.
305
- - Update SRS (REQ-120, REQ-161..REQ-164), WORKFLOW.md (TRACE-L, EDGE-06,
306
- - EDGE-07, EDGE-10), and regenerate REFERENCES.md.
282
+ Rewrite runVersionCommand (REQ-120): concurrent npm-registry and
283
+ GitHub-releases probes bypassing the idle cache gate (REQ-161), printing
284
+ the three-line stdout report: installed version, 'npmjs latest: <v>'
285
+ (REQ-162), 'GitHub latest: <v>' with leading v stripped (REQ-163), and
286
+ 'unknown' placeholders on undeterminable versions (REQ-164).
287
+ Add probeLatestGitHubVersion, GitHubProbeDeps, GitHubLatestVersionProbe,
288
+ and DEFAULT_GITHUB_RELEASES_API_URL to autoUpdate.ts.
289
+ Extract resolveProbeLatestVersion; resolveUpdatedVersion delegates to it.; Update SRS (REQ-120, REQ-161..REQ-164), WORKFLOW.md (TRACE-L, EDGE-06,
290
+ EDGE-07, EDGE-10), and regenerate REFERENCES.md.
307
291
  - add Acknowledgments section crediting CabLate's mcp-google-map [useReq] *(readme)*
308
- - Requirements: add PKG-044 (Acknowledgments as the last README.md section naming CabLate and the project URL).
309
- - README: append the Acknowledgments section after License, thanking CabLate for the mcp-google-map contribution.
310
- - Verification: full unit suite 133/133 pass; static analysis clean.
292
+ Requirements: add PKG-044 (Acknowledgments as the last README.md section naming CabLate and the project URL).; README: append the Acknowledgments section after License, thanking CabLate for the mcp-google-map contribution.; Verification: full unit suite 133/133 pass; static analysis clean.
311
293
  - publish to npm only for master tags; develop tags release without publish [useReq] *(release-npm)*
312
- - Requirements: update PKG-008/PKG-009/PKG-026/PKG-028, add PKG-042/PKG-043, update TST-020.
313
- - Workflow: branch gate resolves origin/master and origin/develop reachability, fails on neither, exports step outputs; npm publish runs only for master-reachable tags.
314
- - Develop-only version tags now build, pack, and create the GitHub Release with the tarball asset without npm publication.
315
- - Tests: refactor ciContract suite to the updated contract; targeted suite 6/6, full suite 133/133 pass.
294
+ Requirements: update PKG-008/PKG-009/PKG-026/PKG-028, add PKG-042/PKG-043, update TST-020.; Workflow: branch gate resolves origin/master and origin/develop reachability, fails on neither, exports step outputs; npm publish runs only for master-reachable tags.; Develop-only version tags now build, pack, and create the GitHub Release with the tarball asset without npm publication.; Tests: refactor ciContract suite to the updated contract; targeted suite 6/6, full suite 133/133 pass.
316
295
 
317
296
  ## [0.18.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.17.0..v0.18.0) - 2026-11-05
318
297
  ### 📚 Documentation
@@ -321,259 +300,221 @@
321
300
  ## [0.17.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.16.0..v0.17.0) - 2026-11-05
322
301
  ### 🚜 Changes
323
302
  - BREAKING CHANGE: migrate runtime floor to Node.js 24 and drop Node 22 workarounds [useReq] *(runtime)*
324
- - package.json engines >=24; @types/node ^24; lockfile refreshed (root identity kept)
325
- - NODE_ENGINE_FLOOR 22->24: doctor and setup checks, Doxygen docs updated
326
- - README badge/prerequisites, docs/CONFIGURATION.md floor, scripts/setup.sh gate at >=24
327
- - tests: doctor/setup floor 24 (22.x now fails); remove transitional Node<=23 --env-file tolerance (exit 9 contract)
328
- - release workflow already Node24-pinned (24.15.0, checkout@v5/setup-node@v5); requirements CTN-005/REQ-070/PKG-014 updated, PKG-041 added
329
- - verification: typecheck clean, 132/132 unit tests pass, static-check clean
303
+ package.json engines >=24; @types/node ^24; lockfile refreshed (root identity kept); NODE_ENGINE_FLOOR 22->24: doctor and setup checks, Doxygen docs updated; README badge/prerequisites, docs/CONFIGURATION.md floor, scripts/setup.sh gate at >=24; tests: doctor/setup floor 24 (22.x now fails); remove transitional Node<=23 --env-file tolerance (exit 9 contract); release workflow already Node24-pinned (24.15.0, checkout@v5/setup-node@v5); requirements CTN-005/REQ-070/PKG-014 updated, PKG-041 added; verification: typecheck clean, 132/132 unit tests pass, static-check clean
330
304
  - enforce npm publication compliance contract [useReq] *(pkg)*
331
- - Add PKG-033..PKG-040 and TST-021 codifying npm publication policies
332
- - Declare SPDX GPL-3.0-only in package.json, package-lock.json, README badge/section
333
- - Add package.json exports map (dist entry + package.json subpath)
334
- - Ship CHANGELOG.md via the files allowlist
335
- - Add tests/npmPublishContract.unit.test.ts: metadata, lockfile identity, private-flag, name policy, npm pack --dry-run tarball allowlist
305
+ Add PKG-033..PKG-040 and TST-021 codifying npm publication policies; Declare SPDX GPL-3.0-only in package.json, package-lock.json, README badge/section; Add package.json exports map (dist entry + package.json subpath); Ship CHANGELOG.md via the files allowlist; Add tests/npmPublishContract.unit.test.ts: metadata, lockfile identity, private-flag, name policy, npm pack --dry-run tarball allowlist
336
306
 
337
307
  ## [0.16.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.15.0..v0.16.0) - 2026-11-05
338
308
  ### 🚜 Changes
339
309
  - publish npm via OIDC Trusted Publishing [useReq] *(release)*
340
- - REQUIREMENTS: PKG-010 switches npm publishing to OIDC Trusted Publishing (no long-lived tokens); add PKG-030 id-token: write permission, PKG-031 no publish-token secret/env, PKG-032 npm >= 11.5.1 floor on the pinned runtime; extend TST-020.
341
- - release-npm.yml: remove the publish-token secret/environment from the publish step; authentication is minted from the workflow OIDC token. Tag trigger, master gate, single job, build/pack/changelog/GitHub Release mechanics unchanged.
342
- - tests: ciContract publish test asserts OIDC permission, token absence, and the pinned runtime floor; npm test passes 124/124.
310
+ REQUIREMENTS: PKG-010 switches npm publishing to OIDC Trusted Publishing (no long-lived tokens); add PKG-030 id-token: write permission, PKG-031 no publish-token secret/env, PKG-032 npm >= 11.5.1 floor on the pinned runtime; extend TST-020.
311
+ release-npm.yml: remove the publish-token secret/environment from the publish step; authentication is minted from the workflow OIDC token. Tag trigger, master gate, single job, build/pack/changelog/GitHub Release mechanics unchanged.
312
+ tests: ciContract publish test asserts OIDC permission, token absence, and the pinned runtime floor; npm test passes 124/124.
343
313
 
344
314
  ## [0.15.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.14.0..v0.15.0) - 2026-11-04
345
315
  ### 🚜 Changes
346
316
  - remove CI automation and release-time testing [useReq] *(ci)*
347
- - Delete .github/workflows/ci.yml and PKG-004: no push/PR automation.
348
- - Release pipeline keeps gate, build, pack, publish, changelog, release;
349
- - typecheck, unit tests, and the doctor smoke check are removed
350
- - (PKG-021 deleted; PKG-005/008/027 updated).
351
- - package.json prepublishOnly now runs version guard + build only.
352
- - tests/ciContract.unit.test.ts rewritten per TST-020: asserts ci.yml
353
- - absence, master-gate ordering, and no test/smoke steps in release-npm.yml.
354
- - Development-phase minimum verification stays local via npm scripts
355
- - (PKG-019: typecheck, test, verify).
317
+ Delete .github/workflows/ci.yml and PKG-004: no push/PR automation.; Release pipeline keeps gate, build, pack, publish, changelog, release;
318
+ typecheck, unit tests, and the doctor smoke check are removed
319
+ (PKG-021 deleted; PKG-005/008/027 updated).
320
+ package.json prepublishOnly now runs version guard + build only.; tests/ciContract.unit.test.ts rewritten per TST-020: asserts ci.yml
321
+ absence, master-gate ordering, and no test/smoke steps in release-npm.yml.
322
+ Development-phase minimum verification stays local via npm scripts
323
+ (PKG-019: typecheck, test, verify).
356
324
 
357
325
  ## [0.14.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.13.0..v0.14.0) - 2026-11-04
358
326
  ### 🚜 Changes
359
327
  - BREAKING CHANGE: rename npm release workflow file to release-npm.yml [useReq] *(ci)*
360
- - Rename .github/workflows/release.yml to .github/workflows/release-npm.yml
361
- - as mandated by new PKG-029; the single master-tag-gated release job
362
- - (PKG-008/PKG-009/PKG-027/PKG-028) is unchanged in content.
363
- - Update the ci.yml header comment to reference the new workflow file name.
364
- - Point tests/ciContract.unit.test.ts at release-npm.yml and extend TST-020
365
- - to cover PKG-029.
366
- - REQUIREMENTS.md: add PKG-029, refresh structure tree and TST-020 mapping.
328
+ Rename .github/workflows/release.yml to .github/workflows/release-npm.yml
329
+ as mandated by new PKG-029; the single master-tag-gated release job
330
+ (PKG-008/PKG-009/PKG-027/PKG-028) is unchanged in content.
331
+ Update the ci.yml header comment to reference the new workflow file name.; Point tests/ciContract.unit.test.ts at release-npm.yml and extend TST-020
332
+ to cover PKG-029.
333
+ REQUIREMENTS.md: add PKG-029, refresh structure tree and TST-020 mapping.
367
334
  - collapse release into single master-tag-gated job [useReq] *(ci)*
368
- - requirements: PKG-009 gates the single release job; add PKG-027 (exactly one integrated release job) and PKG-028 (fail before any install/build/pack/publish when tag not on origin/master, so develop tags never build); update TST-020
369
- - release.yml: merge check-branch into one release job; master-reachability gate is the first step and exits 1 before npm ci/build/pack/publish; no parallel or separate release jobs remain
370
- - tests: ciContract gate test verifies the single-job contract and gate-before-build ordering
335
+ requirements: PKG-009 gates the single release job; add PKG-027 (exactly one integrated release job) and PKG-028 (fail before any install/build/pack/publish when tag not on origin/master, so develop tags never build); update TST-020; release.yml: merge check-branch into one release job; master-reachability gate is the first step and exits 1 before npm ci/build/pack/publish; no parallel or separate release jobs remain; tests: ciContract gate test verifies the single-job contract and gate-before-build ordering
371
336
 
372
337
  ## [0.13.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.11.0..v0.13.0) - 2026-11-04
373
338
  ### 🚜 Changes
374
339
  - restrict package build to master version-tag release workflow [useReq] *(ci)*
375
- - Activate the package build only on a canonical version tag whose commit
376
- - is reachable from master (PKG-008, PKG-009, PKG-026):
377
- - ci.yml: drop build/pack/tarball-install/doctor smoke steps from push/PR
378
- - CI, which now runs lockfile install, typecheck, and unit tests only.
379
- - release.yml: build, pack, install the tarball into a temporary
380
- - environment, and run the no-Google doctor smoke check inside the
381
- - master-gated build-release job before npm publish (PKG-021).
382
- - tests/ciContract.unit.test.ts: re-target the workflow contract suite to
383
- - the new trigger/build placement and add release ordering assertions.
384
- - REQUIREMENTS.md: sharpen PKG-008, retarget PKG-021, add PKG-026/TST-020.
340
+ Activate the package build only on a canonical version tag whose commit
341
+ is reachable from master (PKG-008, PKG-009, PKG-026):
342
+ ci.yml: drop build/pack/tarball-install/doctor smoke steps from push/PR
343
+ CI, which now runs lockfile install, typecheck, and unit tests only.
344
+ release.yml: build, pack, install the tarball into a temporary
345
+ environment, and run the no-Google doctor smoke check inside the
346
+ master-gated build-release job before npm publish (PKG-021).
347
+ tests/ciContract.unit.test.ts: re-target the workflow contract suite to
348
+ the new trigger/build placement and add release ordering assertions.
349
+ REQUIREMENTS.md: sharpen PKG-008, retarget PKG-021, add PKG-026/TST-020.
385
350
 
386
351
  ## [0.11.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.10.0..v0.11.0) - 2026-11-04
387
352
  ### 🐛 Bug Fixes
388
353
  - document geocode payload contract and bounded debug capture [useReq] *(skills)*
389
- - eatspot-discovery skill v1.2.0 fixes two concrete agent-run failures:
390
- - Section 13.1 now documents the real flat maps_geocode payload and
391
- - forbids dereferencing the internal {success,data} envelope (root
392
- - cause of TypeError on response.data.location during debug-register
393
- - aggregation).
394
- - Section D9 adds a mandatory bounded-capture procedure with declared
395
- - TRUNCATED payloads and register-entry integrity rules (re-execute
396
- - missing entries; mark NOT_ACCESSIBLE), preventing loss of executed
397
- - call records on size-limit aborts.
398
- - manifest.json version synced to 1.2.0; new contract unit test
399
- - tests/eatspotSkillContract.unit.test.ts guards both rules.
354
+ eatspot-discovery skill v1.2.0 fixes two concrete agent-run failures:
355
+ Section 13.1 now documents the real flat maps_geocode payload and
356
+ forbids dereferencing the internal {success,data} envelope (root
357
+ cause of TypeError on response.data.location during debug-register
358
+ aggregation).
359
+ Section D9 adds a mandatory bounded-capture procedure with declared
360
+ TRUNCATED payloads and register-entry integrity rules (re-execute
361
+ missing entries; mark NOT_ACCESSIBLE), preventing loss of executed
362
+ call records on size-limit aborts.
363
+ manifest.json version synced to 1.2.0; new contract unit test
364
+ tests/eatspotSkillContract.unit.test.ts guards both rules.
400
365
 
401
366
  ### 🚜 Changes
402
367
  - append skill debug overlays only on install --debug-skills [useReq] *(skills)*
403
- - Move eatspot-discovery debug instructions into DEBUG.md
404
- - Add optional manifest debug overlay and layout-aware skill sync
405
- - Append overlay only with install --debug-skills; show accepts both modes
406
- - Post-upgrade and api-key reinstalls never append the overlay
407
- - Requirements: REQ-152..REQ-160, REQ-126, DES-020, PRJ-012/013, TST-018/019
368
+ Move eatspot-discovery debug instructions into DEBUG.md; Add optional manifest debug overlay and layout-aware skill sync; Append overlay only with install --debug-skills; show accepts both modes; Post-upgrade and api-key reinstalls never append the overlay; Requirements: REQ-152..REQ-160, REQ-126, DES-020, PRJ-012/013, TST-018/019
408
369
  - BREAKING CHANGE: config-file-only settings, human-readable api-key, auto-update [useReq] *(cli)*
409
- - REQ-083/DES-018/DES-023/DES-024: configuration comes only from
410
- - ~/.config/mcp-google-map/config.json ({enabled, apiKey, autoUpdate});
411
- - startup resolves the API key from settings (default empty key) and the
412
- - auto-update check only runs when the autoUpdate flag is true (default on).
413
- - New auto-update enable|disable|1|0 command persists the flag. Env-var
414
- - configuration and connector env/key embedding removed (REQ-114, REQ-142).
415
- - api-key prints a human-readable operation report (REQ-137..139).
416
- - install/exec/batch-geocode drop --apikey and read the settings key.
417
- - Verified: tsc --noEmit clean; eslint clean; npm test 110/110 passing.
370
+ REQ-083/DES-018/DES-023/DES-024: configuration comes only from
371
+ ~/.config/mcp-google-map/config.json ({enabled, apiKey, autoUpdate});
372
+ startup resolves the API key from settings (default empty key) and the
373
+ auto-update check only runs when the autoUpdate flag is true (default on).
374
+ New auto-update enable|disable|1|0 command persists the flag. Env-var
375
+ configuration and connector env/key embedding removed (REQ-114, REQ-142).
376
+ api-key prints a human-readable operation report (REQ-137..139).
377
+ install/exec/batch-geocode drop --apikey and read the settings key.
378
+ Verified: tsc --noEmit clean; eslint clean; npm test 110/110 passing.
418
379
  - gate --upgrade on a latest-version necessity check [useReq] *(upgrade)*
419
- - REQ-144..147: --upgrade first runs a forced registry probe bypassing the idle gate.
420
- - Already-latest installs print the version on stdout and exit 0 with no child spawn.
421
- - Newer or undeterminable outcomes proceed with the npm update, post-upgrade install,
422
- - and stdout summary. Updates REQUIREMENTS.md, WORKFLOW.md (TRACE-L, EDGE-07, external
423
- - boundaries), and regenerated REFERENCES.md. Verified: tsc --noEmit clean; npm test
424
- - 110/110 passing (upgradeManager suite exercises the proceed path).
380
+ REQ-144..147: --upgrade first runs a forced registry probe bypassing the idle gate.
381
+ Already-latest installs print the version on stdout and exit 0 with no child spawn.
382
+ Newer or undeterminable outcomes proceed with the npm update, post-upgrade install,
383
+ and stdout summary. Updates REQUIREMENTS.md, WORKFLOW.md (TRACE-L, EDGE-07, external
384
+ boundaries), and regenerated REFERENCES.md. Verified: tsc --noEmit clean; npm test
385
+ 110/110 passing (upgradeManager suite exercises the proceed path).
425
386
 
426
387
  ## [0.10.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.9.0..v0.10.0) - 2026-11-03
427
388
  ### ⛰️ Features
428
389
  - add api-key command, install placeholder, and stdio key guard [useReq] *(api-key)*
429
- - Add api-key <key> CLI: validate REQ-020 format, persist key in
430
- - ~/.config/mcp-google-map/config.json (apiKey field), then reinstall
431
- - every enabled CLI with the new key (REQ-136..REQ-139)
432
- - install: resolve embedded key as --apikey > persisted settings >
433
- - GOOGLE_MAPS_API_KEY; embed placeholder naming api-key when unset
434
- - (REQ-140, REQ-141, DES-023)
435
- - start/run: effective-key resolution incl. persisted settings and
436
- - placeholder-as-unset; stdio mode exits 1 with stderr JSON inviting
437
- - api-key when no key resolves (REQ-142, REQ-143)
438
- - Docs: REQUIREMENTS/WORKFLOW/REFERENCES updated; README documents the
439
- - command, key priority, and startup guard (PKG-025)
390
+ Add api-key <key> CLI: validate REQ-020 format, persist key in
391
+ ~/.config/mcp-google-map/config.json (apiKey field), then reinstall
392
+ every enabled CLI with the new key (REQ-136..REQ-139)
393
+ install: resolve embedded key as --apikey > persisted settings >
394
+ GOOGLE_MAPS_API_KEY; embed placeholder naming api-key when unset
395
+ (REQ-140, REQ-141, DES-023)
396
+ start/run: effective-key resolution incl. persisted settings and
397
+ placeholder-as-unset; stdio mode exits 1 with stderr JSON inviting
398
+ api-key when no key resolves (REQ-142, REQ-143)
399
+ Docs: REQUIREMENTS/WORKFLOW/REFERENCES updated; README documents the
400
+ command, key priority, and startup guard (PKG-025)
440
401
 
441
402
  ## [0.9.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.8.0..v0.9.0) - 2026-11-03
442
403
  ### 🐛 Bug Fixes
443
404
  - spawn post-upgrade install via upgraded package bin [useReq] *(upgrade)*
444
- - The --upgrade post-upgrade child spawned 'npx -y mcp-google-map install',
445
- - an unversioned npx spec resolved from the npx cache/registry instead of the
446
- - package just upgraded by 'npm install -g'. A stale cached CLI copy could run
447
- - its default command (pre-v0.7.0 releases start the MCP HTTP server there),
448
- - never exit, and block the parent spawnSync forever: the user observed the
449
- - MCP server running instead of the 'install' command (REQ-126 violation).
450
- - POST_UPGRADE_INSTALL_COMMAND is now ['mcp-google-map', 'install']: the
451
- - globally installed bin of the just-upgraded package, already on PATH in
452
- - the exact --upgrade scenario; captured stdout and stderr-inherited spawn
453
- - mechanics unchanged (REQ-125, REQ-126, REQ-128).
454
- - Add tests/upgradeManager.unit.test.ts reproducer: post-upgrade child must
455
- - be the upgraded package bin with captured stdout; upgrade-child failure
456
- - propagation; no-CLI no-op; spawn-failure manual hint; uninstall child;
457
- - parseManagementCommand exact-match dispatch (PRJ-003, REQ-125, REQ-127).
458
- - Update WORKFLOW.md TRACE-L, External Boundaries and EDGE-09; regenerate
459
- - REFERENCES.md. Full suite: 110 tests passing; typecheck and static
460
- - checks clean.
405
+ The --upgrade post-upgrade child spawned 'npx -y mcp-google-map install',
406
+ an unversioned npx spec resolved from the npx cache/registry instead of the
407
+ package just upgraded by 'npm install -g'. A stale cached CLI copy could run
408
+ its default command (pre-v0.7.0 releases start the MCP HTTP server there),
409
+ never exit, and block the parent spawnSync forever: the user observed the
410
+ MCP server running instead of the 'install' command (REQ-126 violation).
411
+ POST_UPGRADE_INSTALL_COMMAND is now ['mcp-google-map', 'install']: the
412
+ globally installed bin of the just-upgraded package, already on PATH in
413
+ the exact --upgrade scenario; captured stdout and stderr-inherited spawn
414
+ mechanics unchanged (REQ-125, REQ-126, REQ-128).
415
+ Add tests/upgradeManager.unit.test.ts reproducer: post-upgrade child must
416
+ be the upgraded package bin with captured stdout; upgrade-child failure
417
+ propagation; no-CLI no-op; spawn-failure manual hint; uninstall child;
418
+ parseManagementCommand exact-match dispatch (PRJ-003, REQ-125, REQ-127).
419
+ Update WORKFLOW.md TRACE-L, External Boundaries and EDGE-09; regenerate
420
+ REFERENCES.md. Full suite: 110 tests passing; typecheck and static
421
+ checks clean.
461
422
 
462
423
  ## [0.8.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.7.0..v0.8.0) - 2026-11-03
463
424
  ### 🚜 Changes
464
425
  - BREAKING CHANGE: rename venue-discovery skill to eatspot-discovery [useReq] *(skills)*
465
- - Rename the bundled agent skill identifier venue-discovery to eatspot-discovery (display name EatSpot Discovery). Updates src/resources/skills/{venue-discovery => eatspot-discovery}/SKILL.md, manifest.json id/name/path, REQUIREMENTS.md PRJ-014/REQ-027/REQ-030/REQ-033/REQ-100..REQ-109, and README.md plus docs/CONFIGURATION.md cross-references.
426
+ Rename the bundled agent skill identifier venue-discovery to eatspot-discovery (display name EatSpot Discovery). Updates src/resources/skills/{venue-discovery => eatspot-discovery}/SKILL.md, manifest.json id/name/path, REQUIREMENTS.md PRJ-014/REQ-027/REQ-030/REQ-033/REQ-100..REQ-109, and README.md plus docs/CONFIGURATION.md cross-references.
466
427
  - replace echoed install JSON with human-readable upgrade summary [useReq] *(upgrade)*
467
- - REQUIREMENTS: REQ-126 now mandates captured child install stdout; new
468
- - REQ-132..135 define the stdout summary (starting/updated versions,
469
- - install outcome, per-CLI results, unknown-version and fallback rules).
470
- - upgradeManager: runPostUpgradeSkillInstall captures child stdout and
471
- - parses per-CLI outcomes; runUpgradeCommand prints the summary on
472
- - stdout after a successful npm upgrade and returns the install code.
473
- - WORKFLOW/REFERENCES: TRACE-L, EDGE-06, EDGE-09 and symbol index
474
- - updated for the new post-upgrade rendering path.
428
+ REQUIREMENTS: REQ-126 now mandates captured child install stdout; new
429
+ REQ-132..135 define the stdout summary (starting/updated versions,
430
+ install outcome, per-CLI results, unknown-version and fallback rules).
431
+ upgradeManager: runPostUpgradeSkillInstall captures child stdout and
432
+ parses per-CLI outcomes; runUpgradeCommand prints the summary on
433
+ stdout after a successful npm upgrade and returns the install code.
434
+ WORKFLOW/REFERENCES: TRACE-L, EDGE-06, EDGE-09 and symbol index
435
+ updated for the new post-upgrade rendering path.
475
436
 
476
437
  ## [0.7.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.6.0..v0.7.0) - 2026-11-03
477
438
  ### 🚜 Changes
478
439
  - gate server start on start/run, no-command help, silent version check [useReq] *(cli)*
479
- - REQUIREMENTS: PRJ-003/REQ-079/REQ-080/REQ-114/REQ-124 updated; REQ-129/130/131 and TST-017 added.
480
- - cli.ts: server runs only via start/run; bare invocation prints help with mcp-google-map v<version> header and --upgrade/--uninstall/--ver/--version epilog.
481
- - upgradeManager: no stderr output when no newer version exists (not an error).
482
- - clientSnippets/cliInstaller: stdio registrations launch 'mcp-google-map start --stdio'.
483
- - Scripts, README, CONFIGURATION docs, and spawn/snippet tests aligned; npm test 103 pass, tsc/eslint clean.
440
+ REQUIREMENTS: PRJ-003/REQ-079/REQ-080/REQ-114/REQ-124 updated; REQ-129/130/131 and TST-017 added.; cli.ts: server runs only via start/run; bare invocation prints help with mcp-google-map v<version> header and --upgrade/--uninstall/--ver/--version epilog.; upgradeManager: no stderr output when no newer version exists (not an error).; clientSnippets/cliInstaller: stdio registrations launch 'mcp-google-map start --stdio'.; Scripts, README, CONFIGURATION docs, and spawn/snippet tests aligned; npm test 103 pass, tsc/eslint clean.
484
441
 
485
442
  ## [0.6.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.5.0..v0.6.0) - 2026-11-02
486
443
  ### ⛰️ Features
487
444
  - add --upgrade/--uninstall/--ver/--version with idle-gated version check [useReq] *(upgradeManager)*
488
- - Add src/utils/upgradeManager.ts: idle cache (~/.cache/mcp-google-map/), forced --ver/--version check, npm-based --upgrade with post-upgrade skill install, --uninstall (REQ-120..REQ-128)
489
- - Extract logging-free probeLatestVersion in autoUpdate.ts; startup check now idle-gated (REQ-082, REQ-121)
490
- - Fix registry accept header (406 -> application/json) so online version verification works
491
- - Update REQUIREMENTS (PRJ-003, CTN-008, DES-022, REQ-120..128), WORKFLOW (TRACE-L, EDGE-07/09), REFERENCES
445
+ Add src/utils/upgradeManager.ts: idle cache (~/.cache/mcp-google-map/), forced --ver/--version check, npm-based --upgrade with post-upgrade skill install, --uninstall (REQ-120..REQ-128); Extract logging-free probeLatestVersion in autoUpdate.ts; startup check now idle-gated (REQ-082, REQ-121); Fix registry accept header (406 -> application/json) so online version verification works; Update REQUIREMENTS (PRJ-003, CTN-008, DES-022, REQ-120..128), WORKFLOW (TRACE-L, EDGE-07/09), REFERENCES
492
446
 
493
447
  ## [0.5.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.4.0..v0.5.0) - 2026-11-02
494
448
  ### ⛰️ Features
495
449
  - add enable/disable/install/uninstall/show CLI configuration commands [useReq] *(cli)*
496
- - Add enable/disable/install/uninstall/show commands managing MCP-server
497
- - registration and packaged skills for pi, openclaw, codex, antigravity,
498
- - claude (REQ-110..REQ-119, PRJ-015, DES-017..DES-020)
499
- - Add cliSettings/cliTargets/cliInstaller/cliShow utils with atomic
500
- - read-modify-write preserving unrelated config entries (JSON mcpServers
501
- - and codex TOML mcp_servers)
502
- - Fix malformed skills manifest.json; ship src/resources/skills in the
503
- - npm package (PKG-024); document commands in README (PKG-023)
504
- - Update REQUIREMENTS/WORKFLOW/REFERENCES
450
+ Add enable/disable/install/uninstall/show commands managing MCP-server
451
+ registration and packaged skills for pi, openclaw, codex, antigravity,
452
+ claude (REQ-110..REQ-119, PRJ-015, DES-017..DES-020)
453
+ Add cliSettings/cliTargets/cliInstaller/cliShow utils with atomic
454
+ read-modify-write preserving unrelated config entries (JSON mcpServers
455
+ and codex TOML mcp_servers)
456
+ Fix malformed skills manifest.json; ship src/resources/skills in the
457
+ npm package (PKG-024); document commands in README (PKG-023)
458
+ Update REQUIREMENTS/WORKFLOW/REFERENCES
505
459
 
506
460
  ### 🐛 Bug Fixes
507
461
  - Fix .gitignore file.
508
462
  - drop deprecated glob@10 via @googlemaps/places ^3.1.0 [useReq] *(deps)*
509
- - Install-time deprecation warnings traced to the production dependency tree: @googlemaps/places@2.x -> google-gax@5 -> rimraf@5 -> glob@10.5.0 (npm deprecation cites publicized security vulnerabilities).
510
- - Bump @googlemaps/places ^2.1.0 -> ^3.1.0: google-gax@^6 removes rimraf/glob from the tree; engines node >= 22 preserved; PlacesClient surface unchanged (tsc clean, 57 unit tests pass).
511
- - Add tests/dependencyTree.unit.test.ts reproducer: lockfile tree must contain no glob package and must lock @googlemaps/places at major 3. Remaining crypto-js and node-domexception deprecations plus the protobufjs install-scripts notice are upstream or npm-client-side.
463
+ Install-time deprecation warnings traced to the production dependency tree: @googlemaps/places@2.x -> google-gax@5 -> rimraf@5 -> glob@10.5.0 (npm deprecation cites publicized security vulnerabilities).
464
+ Bump @googlemaps/places ^2.1.0 -> ^3.1.0: google-gax@^6 removes rimraf/glob from the tree; engines node >= 22 preserved; PlacesClient surface unchanged (tsc clean, 57 unit tests pass).
465
+ Add tests/dependencyTree.unit.test.ts reproducer: lockfile tree must contain no glob package and must lock @googlemaps/places at major 3. Remaining crypto-js and node-domexception deprecations plus the protobufjs install-scripts notice are upstream or npm-client-side.
512
466
 
513
467
  ### 🚜 Changes
514
468
  - derive settings dir from program name, forbid generic skills dir [useReq] *(cli-settings)*
515
- - Add DES-021: settings directory MUST equal the distribution program
516
- - name mcp-google-map; shared/generic dirs like ~/.config/skills/ are
517
- - forbidden
518
- - Introduce SETTINGS_PROGRAM_NAME constant as single source of truth
519
- - for CLI_SETTINGS_RELATIVE in src/utils/cliSettings.ts
520
- - Drop the reference skills settings-path mention from documentation;
521
- - runtime path stays ~/.config/mcp-google-map/config.json (DES-018)
522
- - Regenerate REFERENCES.md
469
+ Add DES-021: settings directory MUST equal the distribution program
470
+ name mcp-google-map; shared/generic dirs like ~/.config/skills/ are
471
+ forbidden
472
+ Introduce SETTINGS_PROGRAM_NAME constant as single source of truth
473
+ for CLI_SETTINGS_RELATIVE in src/utils/cliSettings.ts
474
+ Drop the reference skills settings-path mention from documentation;
475
+ runtime path stays ~/.config/mcp-google-map/config.json (DES-018)
476
+ Regenerate REFERENCES.md
523
477
  - drop GeoScout 6.2 lineage and bind filters to venue-discovery skill [useReq] *(skills)*
524
- - Remove all GeoScout 6.2 references: PRJ-014 rewritten, docs/GEOSCOUT.md deleted, README/docs/package.json/manifest/SKILL/NewPlacesService cleaned
525
- - Bind filters and raw-payload implementations to the in-project venue-discovery skill and vice-versa (REQ-027, REQ-030, REQ-033, new REQ-109)
526
- - Rename tests/geoscoutFilters.unit.test.ts to placesFilters.unit.test.ts (titles only; TST-003 updated); npm test 102/102 green
478
+ Remove all GeoScout 6.2 references: PRJ-014 rewritten, docs/GEOSCOUT.md deleted, README/docs/package.json/manifest/SKILL/NewPlacesService cleaned; Bind filters and raw-payload implementations to the in-project venue-discovery skill and vice-versa (REQ-027, REQ-030, REQ-033, new REQ-109); Rename tests/geoscoutFilters.unit.test.ts to placesFilters.unit.test.ts (titles only; TST-003 updated); npm test 102/102 green
527
479
  - add venue-discovery skill and skills resource framework [useReq] *(skills)*
528
- - Add src/resources/skills: manifest.json registry + README.md authoring guide (PRJ-012..014, REQ-097..108)
529
- - Add venue-discovery SKILL.md: GeoScout 6.2 translated to English and bound to mcp-google-map; all 18 tools mapped; budget/priceLevels/priceRange rules, grades A-E, categories, hours, geo modes, progressive search, output A-D + DEBUG
530
- - REQUIREMENTS.md: skills section; WORKFLOW.md: inert-resources note
480
+ Add src/resources/skills: manifest.json registry + README.md authoring guide (PRJ-012..014, REQ-097..108); Add venue-discovery SKILL.md: GeoScout 6.2 translated to English and bound to mcp-google-map; all 18 tools mapped; budget/priceLevels/priceRange rules, grades A-E, categories, hours, geo modes, progressive search, output A-D + DEBUG; REQUIREMENTS.md: skills section; WORKFLOW.md: inert-resources note
531
481
  - add setup+snippet commands, typed config, doctor probes, loopback *(cli)*
532
- - Requirements: PRJ-003/006/009-011, CTN-005/007-009, DES-014-016, REQ-008/009/070/079/087-096, PKG-003-005/018-022, TST-002/012-016; LIM-003 removed (doctor now enforces engines >= 22).
533
- - New: non-interactive setup onboarding, snippet generator, tool/API profiles, typed config resolver with --env-file and secret masking.
534
- - Doctor: engines floor 22, masked config diagnostics, per-tool API profiles, selectable --probes (legacy --live preserved).
535
- - HTTP: loopback default 127.0.0.1 (migration documented), non-zero exit on failed startup, SIGINT/SIGTERM orderly shutdown; stdio from ready artifact.
536
- - Tooling: no implicit script chains, npm run verify pipeline, CI 3-OS matrix with tarball install + no-Google-API smoke; docs aligned with supported CLI/headers.
537
- - Tests: 6 new unit suites; 93 unit tests pass; typecheck and build clean.
482
+ Requirements: PRJ-003/006/009-011, CTN-005/007-009, DES-014-016, REQ-008/009/070/079/087-096, PKG-003-005/018-022, TST-002/012-016; LIM-003 removed (doctor now enforces engines >= 22).
483
+ New: non-interactive setup onboarding, snippet generator, tool/API profiles, typed config resolver with --env-file and secret masking.; Doctor: engines floor 22, masked config diagnostics, per-tool API profiles, selectable --probes (legacy --live preserved).; HTTP: loopback default 127.0.0.1 (migration documented), non-zero exit on failed startup, SIGINT/SIGTERM orderly shutdown; stdio from ready artifact.; Tooling: no implicit script chains, npm run verify pipeline, CI 3-OS matrix with tarball install + no-Google-API smoke; docs aligned with supported CLI/headers.; Tests: 6 new unit suites; 93 unit tests pass; typecheck and build clean.
538
484
 
539
485
  ### 🎯 Cover Requirements
540
486
  - add spawn-level env-file/HTTP/shutdown and CI-contract tests *(tests)*
541
- - Close verification-coverage gaps of the new contracts without SRS changes:
542
- - tests/cliSpawn.unit.test.ts: process-level --env-file tests (missing file non-zero exit with JSON error on the exit-1 path, Node>=24 exit-9 tolerated; existing file loads for both argv forms before doctor), HTTP server startup from an env-file port with loopback endpoint and SIGTERM orderly shutdown (exit 0, 'HTTP server stopped'), and the start-mcp.sh missing-artifact remediation guard (non-win32).
543
- - tests/ciContract.unit.test.ts: static regression guard for the CI contract (3-OS matrix, lockfile install, typecheck/test/build, tarball install, doctor smoke with placeholder key, e2e excluded).
544
- - src/cli.ts: export extractEnvFileOption for direct unit testing; no behavior change.
545
- - WORKFLOW.md unchanged (no runtime-model impact); REFERENCES.md regenerated.
546
- - Verification: 102/102 unit tests pass; typecheck and static-check clean.
487
+ Close verification-coverage gaps of the new contracts without SRS changes:
488
+ tests/cliSpawn.unit.test.ts: process-level --env-file tests (missing file non-zero exit with JSON error on the exit-1 path, Node>=24 exit-9 tolerated; existing file loads for both argv forms before doctor), HTTP server startup from an env-file port with loopback endpoint and SIGTERM orderly shutdown (exit 0, 'HTTP server stopped'), and the start-mcp.sh missing-artifact remediation guard (non-win32).; tests/ciContract.unit.test.ts: static regression guard for the CI contract (3-OS matrix, lockfile install, typecheck/test/build, tarball install, doctor smoke with placeholder key, e2e excluded).; src/cli.ts: export extractEnvFileOption for direct unit testing; no behavior change.; WORKFLOW.md unchanged (no runtime-model impact); REFERENCES.md regenerated.; Verification: 102/102 unit tests pass; typecheck and static-check clean.
547
489
 
548
490
  ## [0.4.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.3.0..v0.4.0) - 2026-10-30
549
491
  ### 🚜 Changes
550
492
  - enable startup update check by default with opt-out [useReq] *(auto-update)*
551
- - Add auto-update check at MCP server startup (stdio + HTTP), enabled by
552
- - default (REQ-082), comparing running version vs npm registry latest.
553
- - Add inverse-polarity disable variable MCP_AUTO_UPDATE_DISABLED
554
- - (1/true/yes case-insensitive) skipping all registry calls (REQ-083).
555
- - Report newer versions on stderr only with upgrade command (REQ-084);
556
- - fire-and-forget execution tolerates all failures without blocking
557
- - startup (REQ-085).
558
- - New src/utils/autoUpdate.ts with injectable fetch/logger/env; new
559
- - tests/autoUpdate.unit.test.ts covering TST-011 (55/55 pass).
560
- - Document variable in .env.example and docs/CONFIGURATION.md (REQ-086);
561
- - update REQUIREMENTS.md, WORKFLOW.md, REFERENCES.md.
493
+ Add auto-update check at MCP server startup (stdio + HTTP), enabled by
494
+ default (REQ-082), comparing running version vs npm registry latest.
495
+ Add inverse-polarity disable variable MCP_AUTO_UPDATE_DISABLED
496
+ (1/true/yes case-insensitive) skipping all registry calls (REQ-083).
497
+ Report newer versions on stderr only with upgrade command (REQ-084);
498
+ fire-and-forget execution tolerates all failures without blocking
499
+ startup (REQ-085).
500
+ New src/utils/autoUpdate.ts with injectable fetch/logger/env; new
501
+ tests/autoUpdate.unit.test.ts covering TST-011 (55/55 pass).
502
+ Document variable in .env.example and docs/CONFIGURATION.md (REQ-086);
503
+ update REQUIREMENTS.md, WORKFLOW.md, REFERENCES.md.
562
504
  - enforce publish version guard via prepublishOnly [useReq] *(packaging)*
563
- - Add PKG-017 to SRS 2.3: npm publish MUST fail when package.json version is 0.0.0-based or carries a prerelease/build suffix (stray 0.0.0-stage incident).
564
- - Add scripts/check-publish-version.mjs (Doxygen-documented): strict X.Y.Z pattern plus 0.0.0 placeholder prefix check; wired as first stage of prepublishOnly, preserving PKG-005 chain (typecheck, tests, build).
565
- - Verified: tsc --noEmit clean, 41/41 unit tests, npm publish --dry-run full chain, refusal cases 0.0.0-stage and 1.2.3-rc.1 exit 1.
566
- - Ops: unpublished mcp-google-map@0.0.0-stage from the npm registry.
505
+ Add PKG-017 to SRS 2.3: npm publish MUST fail when package.json version is 0.0.0-based or carries a prerelease/build suffix (stray 0.0.0-stage incident).
506
+ Add scripts/check-publish-version.mjs (Doxygen-documented): strict X.Y.Z pattern plus 0.0.0 placeholder prefix check; wired as first stage of prepublishOnly, preserving PKG-005 chain (typecheck, tests, build).
507
+ Verified: tsc --noEmit clean, 41/41 unit tests, npm publish --dry-run full chain, refusal cases 0.0.0-stage and 1.2.3-rc.1 exit 1.
508
+ Ops: unpublished mcp-google-map@0.0.0-stage from the npm registry.
567
509
 
568
510
  ## [0.3.0](https://github.com/Ogekuri/mcp-google-api/compare/v0.2.0..v0.3.0) - 2026-10-29
569
511
  ### 🚜 Changes
570
512
  - document pi CLI and OpenClaw MCP registration and Google API prerequisites [useReq] *(docs)*
571
- - Add PKG-015/PKG-016: MCP client registration docs and configuration
572
- - prerequisites for pi CLI and OpenClaw in README and CONFIGURATION
573
- - README: fix stale 'From npm (once published)', add pi CLI, OpenClaw
574
- - and configuration-prerequisites sections linked to the Google API table
575
- - docs/CONFIGURATION.md: add 'Registrazione nei client MCP' section
576
- - No source or test changes; typecheck and 41 unit tests pass
513
+ Add PKG-015/PKG-016: MCP client registration docs and configuration
514
+ prerequisites for pi CLI and OpenClaw in README and CONFIGURATION
515
+ README: fix stale 'From npm (once published)', add pi CLI, OpenClaw
516
+ and configuration-prerequisites sections linked to the Google API table
517
+ docs/CONFIGURATION.md: add 'Registrazione nei client MCP' section; No source or test changes; typecheck and 41 unit tests pass
577
518
 
578
519
  ## [0.2.0](https://github.com/Ogekuri/mcp-google-api/releases/tag/v0.2.0) - 2026-10-29
579
520
  ### ⛰️ Features
@@ -585,28 +526,16 @@
585
526
 
586
527
  ### 🚜 Changes
587
528
  - migrate tag pipeline with master gate, npm publish and commit changelog *(release)*
588
- - Rewrite .github/workflows/release.yml from /tmp/release-npm.yml desiderata
589
- - Trigger only canonical tags v[0-9]+.[0-9]+.[0-9]+ gated on origin/master
590
- - Publish to npm with provenance (OIDC) and --access public via NPM_TOKEN
591
- - Changelog via mikepenz/release-changelog-builder v6 (COMMIT mode)
592
- - Release asset: npm tarball instead of raw sources (fail on unmatched)
593
- - SRS: PKG-008 modified, PKG-009..PKG-014 added [useReq]
529
+ Rewrite .github/workflows/release.yml from /tmp/release-npm.yml desiderata; Trigger only canonical tags v[0-9]+.[0-9]+.[0-9]+ gated on origin/master; Publish to npm with provenance (OIDC) and --access public via NPM_TOKEN; Changelog via mikepenz/release-changelog-builder v6 (COMMIT mode); Release asset: npm tarball instead of raw sources (fail on unmatched); SRS: PKG-008 modified, PKG-009..PKG-014 added [useReq]
594
530
  - add publication readiness with CI, release workflow and README fixes *(packaging)*
595
- - Add PKG-001..008 packaging/publication requirements (SRS section 2.3)
596
- - Fix README: Node/TS badges, remove TODOs, working anchors, Feature Highlights and Install/Uninstall sections (npm, npx, cross-platform)
597
- - Add .github/workflows/ci.yml (node 22: npm ci, typecheck, unit tests; e2e excluded)
598
- - Add .github/workflows/release.yml (tag: verify, build, npm pack, GitHub Release)
599
- - Add prepublishOnly script; rename doctor package label; bump 0.0.0 -> 0.1.0 [useReq]
531
+ Add PKG-001..008 packaging/publication requirements (SRS section 2.3); Fix README: Node/TS badges, remove TODOs, working anchors, Feature Highlights and Install/Uninstall sections (npm, npx, cross-platform); Add .github/workflows/ci.yml (node 22: npm ci, typecheck, unit tests; e2e excluded); Add .github/workflows/release.yml (tag: verify, build, npm pack, GitHub Release); Add prepublishOnly script; rename doctor package label; bump 0.0.0 -> 0.1.0 [useReq]
600
532
  - align SRS and workflow with places pagination fix [useReq] *(docs)*
601
- - Analyze commit ab2a65c and update canonical docs to the true state.
602
- - REQ-029 rewritten: pageSize/maxResultCount translated to a single
603
- - maxResultCount field clamped 1-20 (SDK proto lacks pageSize)
604
- - REQ-081 added: nextPageToken surfaced when the API returns one
605
- - LIM-007 added: pageToken forwarded but dropped by @googlemaps/places
606
- - protos (<= v3.1.0), so pagination has no server-side effect
607
- - TST-003 extended to the pageSize-to-maxResultCount translation test
608
- - WORKFLOW.md searchTextFull trace node updated; REFERENCES.md regenerated
609
- - No source changes: commit ab2a65c already implemented the fix (41/41 tests pass)
533
+ Analyze commit ab2a65c and update canonical docs to the true state.
534
+ REQ-029 rewritten: pageSize/maxResultCount translated to a single
535
+ maxResultCount field clamped 1-20 (SDK proto lacks pageSize)
536
+ REQ-081 added: nextPageToken surfaced when the API returns one; LIM-007 added: pageToken forwarded but dropped by @googlemaps/places
537
+ protos (<= v3.1.0), so pagination has no server-side effect
538
+ TST-003 extended to the pageSize-to-maxResultCount translation test; WORKFLOW.md searchTextFull trace node updated; REFERENCES.md regenerated; No source changes: commit ab2a65c already implemented the fix (41/41 tests pass)
610
539
 
611
540
  ### 📚 Documentation
612
541
  - Update REFERENCES.md document. [useReq] *(references)*
@@ -637,6 +566,8 @@
637
566
  - \[0.23.0\]: https://github.com/Ogekuri/mcp-google-api/releases/tag/v0.23.0
638
567
  - \[0.24.0\]: https://github.com/Ogekuri/mcp-google-api/releases/tag/v0.24.0
639
568
  - \[0.25.0\]: https://github.com/Ogekuri/mcp-google-api/releases/tag/v0.25.0
569
+ - \[0.26.0\]: https://github.com/Ogekuri/mcp-google-api/releases/tag/v0.26.0
570
+ - \[0.26.1\]: https://github.com/Ogekuri/mcp-google-api/releases/tag/v0.26.1
640
571
 
641
572
  [0.2.0]: https://github.com/Ogekuri/mcp-google-api/releases/tag/v0.2.0
642
573
  [0.3.0]: https://github.com/Ogekuri/mcp-google-api/compare/v0.2.0..v0.3.0
@@ -661,3 +592,5 @@
661
592
  [0.23.0]: https://github.com/Ogekuri/mcp-google-api/compare/v0.22.0..v0.23.0
662
593
  [0.24.0]: https://github.com/Ogekuri/mcp-google-api/compare/v0.23.0..v0.24.0
663
594
  [0.25.0]: https://github.com/Ogekuri/mcp-google-api/compare/v0.24.0..v0.25.0
595
+ [0.26.0]: https://github.com/Ogekuri/mcp-google-api/compare/v0.25.0..v0.26.0
596
+ [0.26.1]: https://github.com/Ogekuri/mcp-google-api/compare/v0.26.0..v0.26.1