diff --git a/CHANGELOG.md b/CHANGELOG.md index b40f31e..7cea72b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. The format ## [Unreleased] +## [0.5.3] - 2026-07-30 + +### Changed + +- [#204](https://github.com/mohanagy/miftah/issues/204) Kept guided Console setup reachable after configurations already exist through a visible **Set up another MCP** action. Returning users can create a separate named configuration through the reviewed local STDIO secret/API-key, native OAuth, returning provider-owned account, provider-adapter OAuth, or manual upstream-auth paths; successful publication refreshes discovery immediately. Existing files are never overwritten, unsafe catalog candidates remain unavailable with bounded diagnostics, audit fields remain redacted, and private-directory, inode-anchored POSIX publication, bounded no-shell subprocess, and Windows containment contracts remain fail closed. +- [#309](https://github.com/mohanagy/miftah/issues/309) Prepared the compatible v0.5.3 patch release for returning-user Console setup. Miftah remains experimental and pre-1.0. Closing #204 was an owner waiver of its three-evaluator acceptance criterion, not evidence that those evaluations occurred; external validation remains incomplete under #25, #88, #202, and #290. + ## [0.5.2] - 2026-07-29 ### Fixed diff --git a/README.md b/README.md index 0ea87e9..fa7a4e4 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.2 +npm install -g @lubab/miftah@0.5.3 miftah version ``` diff --git a/docs/presets-and-clients.md b/docs/presets-and-clients.md index 200d921..fff88a7 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.2` +- Miftah package version: `0.5.3` - 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 e52261f..423d65d 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.2` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: +Install `@lubab/miftah@0.5.3` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: ```bash -npm install -g @lubab/miftah@0.5.2 +npm install -g @lubab/miftah@0.5.3 miftah version ``` diff --git a/package-lock.json b/package-lock.json index 329468d..e43cb89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lubab/miftah", - "version": "0.5.2", + "version": "0.5.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lubab/miftah", - "version": "0.5.2", + "version": "0.5.3", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", diff --git a/package.json b/package.json index d4e1003..b7a0582 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lubab/miftah", - "version": "0.5.2", + "version": "0.5.3", "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 05fac75..58e8730 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.2"; +const releaseVersion = "0.5.3"; function readRepositoryFile(path: string): string { return readFileSync(new URL(`../${path}`, import.meta.url), "utf8"); @@ -21,11 +21,17 @@ function releaseNotes(changelog: string, version: string): string { return changelog.slice(match.index, end < 0 ? undefined : end); } -describe("v0.5.2 release artifacts", () => { +describe("v0.5.3 release artifacts", () => { it.each([ - "## [0.5.2] - 2026-7-29\n\n### Fixed\n", - "Release candidate: ## [0.5.2] - 2026-07-29\n\n### Fixed\n" - ])("requires a dated release heading at the start of a line", (changelog) => { + { + name: "a non-zero-padded date", + changelog: "## [0.5.3] - 2026-7-30\n\n### Changed\n" + }, + { + name: "a heading that does not start its line", + changelog: "Release candidate: ## [0.5.3] - 2026-07-30\n\n### Changed\n" + } + ])("rejects $name", ({ changelog }) => { expect(() => releaseNotes(changelog, releaseVersion)).toThrow( `Unable to find the ${releaseVersion} changelog entry.` ); @@ -65,21 +71,20 @@ describe("v0.5.2 release artifacts", () => { } }); - it("documents the evaluator-driven recovery fixes while retaining the experimental package status", () => { + it("documents returning-user setup while retaining the experimental package status", () => { const changelog = readRepositoryFile("CHANGELOG.md"); const notes = releaseNotes(changelog, releaseVersion); expect(notes).toContain("Miftah remains experimental and pre-1.0"); - expect(notes).toContain("### Fixed"); - const fixedStart = notes.indexOf("### Fixed"); - const fixedEnd = notes.indexOf("\n### ", fixedStart + "### Fixed".length); - const fixedNotes = notes.slice(fixedStart, fixedEnd < 0 ? undefined : fixedEnd); - for (const issue of [203, 300, 301, 305]) { - expect(fixedNotes).toContain(`[#${issue}](https://github.com/mohanagy/miftah/issues/${issue})`); + 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 [204, 309]) { + expect(changedNotes).toContain(`[#${issue}](https://github.com/mohanagy/miftah/issues/${issue})`); } - expect(notes).toMatch(/found, ready, and need-attention/iu); - expect(notes).toMatch(/still-valid Console sessions across refresh/iu); - expect(notes).toMatch(/names-only environment-secret readiness/iu); + expect(notes).toMatch(/Set up another MCP/iu); + expect(notes).toMatch(/owner waiver/iu); expect(notes).toMatch(/external validation remains incomplete/iu); const readme = readRepositoryFile("README.md");