diff --git a/CHANGELOG.md b/CHANGELOG.md index 4018dec..9923973 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file. The format ## [Unreleased] +## [0.5.8] - 2026-08-09 + +### Fixed + +- [#347](https://github.com/mohanagy/miftah/issues/347) Made upstream startup failures actionable without exposing configuration or credential material. Runtime warnings remain concise and point to the exact `miftah test-profile` command; `test-profile` and `doctor` now surface a bounded, secret-redacted failure cause and remediation. Diagnostics also recognize pinned `uvx` package invocations while retaining the existing fail-closed startup boundary. + +### Changed + +- [#349](https://github.com/mohanagy/miftah/pull/349) Refreshed the compatible `dotenv`, ESLint, and TypeScript ESLint dependencies after the full supported Node and operating-system matrix passed. The deferred Vitest 4 and TypeScript 7 major upgrades are not part of this release. +- [#350](https://github.com/mohanagy/miftah/issues/350) Prepared the compatible v0.5.8 patch release for actionable upstream-startup diagnostics and the safe dependency refresh. Miftah remains experimental and pre-1.0. Technical delivery and owner dogfooding do not satisfy external evaluator counts; external validation remains incomplete under #25, #88, #202, and #290. + ## [0.5.7] - 2026-08-01 ### Changed diff --git a/README.md b/README.md index 552239a..e106abd 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Install Miftah, then choose the terminal wizard or the browser Console. Both use ### 1. Install the current release ```bash -npm install -g @lubab/miftah@0.5.7 +npm install -g @lubab/miftah@0.5.8 miftah version ``` diff --git a/docs/presets-and-clients.md b/docs/presets-and-clients.md index 336157a..d3d4325 100644 --- a/docs/presets-and-clients.md +++ b/docs/presets-and-clients.md @@ -3,7 +3,7 @@ This is the compatibility source of truth for generated `miftah init` configurations and client snippets. - Catalog version: `3` -- Miftah package version: `0.5.7` +- Miftah package version: `0.5.8` - Last tested / validation boundary: the catalog builds strict Miftah configuration that `validateConfig` accepts. The docs contract test checks generated configuration only; it does **not** construct a runtime, start, authenticate to, or smoke-test external providers. Miftah itself requires Node.js `>=20`. That does not establish an upstream server's Node requirement. diff --git a/docs/whats-new-in-0.5.md b/docs/whats-new-in-0.5.md index 782cf17..23a7a57 100644 --- a/docs/whats-new-in-0.5.md +++ b/docs/whats-new-in-0.5.md @@ -1,9 +1,9 @@ # What is in Miftah 0.5 -Install `@lubab/miftah@0.5.7` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: +Install `@lubab/miftah@0.5.8` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: ```bash -npm install -g @lubab/miftah@0.5.7 +npm install -g @lubab/miftah@0.5.8 miftah version ``` diff --git a/package-lock.json b/package-lock.json index 4aa35d4..c1b1b0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lubab/miftah", - "version": "0.5.7", + "version": "0.5.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lubab/miftah", - "version": "0.5.7", + "version": "0.5.8", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", diff --git a/package.json b/package.json index 66fb6bc..dd86a22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lubab/miftah", - "version": "0.5.7", + "version": "0.5.8", "description": "Wrap any MCP. Use the right account without reconnecting.", "keywords": [ "mcp", diff --git a/tests/release-version.test.ts b/tests/release-version.test.ts index e7325b3..52d7d21 100644 --- a/tests/release-version.test.ts +++ b/tests/release-version.test.ts @@ -1,7 +1,7 @@ import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; -const releaseVersion = "0.5.7"; +const releaseVersion = "0.5.8"; function readRepositoryFile(path: string): string { return readFileSync(new URL(`../${path}`, import.meta.url), "utf8"); @@ -21,15 +21,15 @@ function releaseNotes(changelog: string, version: string): string { return changelog.slice(match.index, end < 0 ? undefined : end); } -describe("v0.5.7 release artifacts", () => { +describe("v0.5.8 release artifacts", () => { it.each([ { name: "a non-zero-padded date", - changelog: "## [0.5.7] - 2026-8-1\n\n### Changed\n" + changelog: "## [0.5.8] - 2026-8-9\n\n### Changed\n" }, { name: "a heading that does not start its line", - changelog: "Release candidate: ## [0.5.7] - 2026-08-01\n\n### Changed\n" + changelog: "Release candidate: ## [0.5.8] - 2026-08-09\n\n### Changed\n" } ])("rejects $name", ({ changelog }) => { expect(() => releaseNotes(changelog, releaseVersion)).toThrow( @@ -71,22 +71,28 @@ describe("v0.5.7 release artifacts", () => { } }); - it("documents the Console usability patch while retaining the experimental package status", () => { + it("documents actionable startup diagnostics and the safe maintenance refresh", () => { const changelog = readRepositoryFile("CHANGELOG.md"); const notes = releaseNotes(changelog, releaseVersion); expect(notes).toContain("Miftah remains experimental and pre-1.0"); + expect(notes).toContain("### Fixed"); + expect(notes).toContain("[#347](https://github.com/mohanagy/miftah/issues/347)"); + expect(notes).toMatch( + /Runtime warnings remain concise and point to the exact `miftah test-profile` command/iu, + ); + expect(notes).toMatch( + /`test-profile` and `doctor` now surface a bounded, secret-redacted failure cause and remediation/iu, + ); + expect(notes).toContain("uvx"); expect(notes).toContain("### Changed"); - const changedStart = notes.indexOf("### Changed"); - const changedEnd = notes.indexOf("\n### ", changedStart + "### Changed".length); - const changedNotes = notes.slice(changedStart, changedEnd < 0 ? undefined : changedEnd); - for (const issue of [331, 332, 333, 334, 339]) { - expect(changedNotes).toContain(`[#${issue}](https://github.com/mohanagy/miftah/issues/${issue})`); - } - expect(notes).toMatch(/account switching/iu); - expect(notes).toMatch(/task sections/iu); - expect(notes).toMatch(/setup.*user language/iu); - expect(notes).toMatch(/responsive/iu); + expect(notes).toContain("[#349](https://github.com/mohanagy/miftah/pull/349)"); + expect(notes).toContain("[#350](https://github.com/mohanagy/miftah/issues/350)"); + expect(notes).toMatch(/dependency/iu); + expect(notes).toMatch(/\bdotenv\b/iu); + expect(notes).toMatch(/TypeScript ESLint/iu); + expect(notes).toContain("Vitest 4"); + expect(notes).toContain("TypeScript 7"); expect(notes).toContain("external validation remains incomplete under #25, #88, #202, and #290"); const readme = readRepositoryFile("README.md");