From 661b6f82c12c4c163ee693d507311ec2236a7ec9 Mon Sep 17 00:00:00 2001 From: mohammed naji Date: Fri, 31 Jul 2026 08:57:51 +0400 Subject: [PATCH 1/2] release: prepare v0.5.5 --- CHANGELOG.md | 3 +++ README.md | 2 +- docs/presets-and-clients.md | 2 +- docs/whats-new-in-0.5.md | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- tests/release-version.test.ts | 19 ++++++++++--------- 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5572b60..58c4b25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,12 @@ All notable changes to this project will be documented in this file. The format ## [Unreleased] +## [0.5.5] - 2026-07-31 + ### Changed - [#202](https://github.com/mohanagy/miftah/issues/202) Made the Console task-first for returning users: validated MCP connections now lead the page and show their named account profiles, durable default, and whether live in-session switching through `miftah_use_profile` is available. The setup wizard remains directly reachable, while the authentication ownership matrix and trust-boundary reference are collapsed behind **How authentication works**. The Console still exposes only non-secret metadata, never inspects client settings or running MCP processes, and preserves the existing validation, redaction, audit, file-containment, and no-shell boundaries. External evaluator acceptance remains open and is not claimed by this change. +- [#319](https://github.com/mohanagy/miftah/issues/319) Prepared the compatible v0.5.5 patch release for the task-first Console correction. Miftah remains experimental and pre-1.0. Technical delivery and owner dogfooding do not satisfy the external acceptance counts; external validation remains incomplete under #25, #88, and #202. ## [0.5.4] - 2026-07-30 diff --git a/README.md b/README.md index 3f4771e..73a840f 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.4 +npm install -g @lubab/miftah@0.5.5 miftah version ``` diff --git a/docs/presets-and-clients.md b/docs/presets-and-clients.md index e0f206b..a6acf92 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.4` +- Miftah package version: `0.5.5` - 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 7f95e3b..310e8d5 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.4` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: +Install `@lubab/miftah@0.5.5` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: ```bash -npm install -g @lubab/miftah@0.5.4 +npm install -g @lubab/miftah@0.5.5 miftah version ``` diff --git a/package-lock.json b/package-lock.json index 2b8c99c..4f4ba69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lubab/miftah", - "version": "0.5.4", + "version": "0.5.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lubab/miftah", - "version": "0.5.4", + "version": "0.5.5", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", diff --git a/package.json b/package.json index c3fb573..ba8e92c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lubab/miftah", - "version": "0.5.4", + "version": "0.5.5", "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 135369a..510f775 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.4"; +const releaseVersion = "0.5.5"; 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.4 release artifacts", () => { +describe("v0.5.5 release artifacts", () => { it.each([ { name: "a non-zero-padded date", - changelog: "## [0.5.4] - 2026-7-30\n\n### Changed\n" + changelog: "## [0.5.5] - 2026-7-31\n\n### Changed\n" }, { name: "a heading that does not start its line", - changelog: "Release candidate: ## [0.5.4] - 2026-07-30\n\n### Changed\n" + changelog: "Release candidate: ## [0.5.5] - 2026-07-31\n\n### Changed\n" } ])("rejects $name", ({ changelog }) => { expect(() => releaseNotes(changelog, releaseVersion)).toThrow( @@ -71,7 +71,7 @@ describe("v0.5.4 release artifacts", () => { } }); - it("documents returning-user setup while retaining the experimental package status", () => { + it("documents the task-first Console while retaining the experimental package status", () => { const changelog = readRepositoryFile("CHANGELOG.md"); const notes = releaseNotes(changelog, releaseVersion); @@ -80,12 +80,13 @@ describe("v0.5.4 release artifacts", () => { 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, 314]) { + for (const issue of [202, 319]) { expect(changedNotes).toContain(`[#${issue}](https://github.com/mohanagy/miftah/issues/${issue})`); } - expect(notes).toMatch(/one setup path at a time/iu); - expect(notes).toMatch(/Back and Cancel provide no-write recovery/iu); - expect(notes).toMatch(/without creating or changing a configuration/iu); + expect(notes).toMatch(/task-first/iu); + expect(notes).toMatch(/named account profiles/iu); + expect(notes).toContain("miftah_use_profile"); + expect(notes).toContain("How authentication works"); expect(notes).toMatch(/external validation remains incomplete/iu); const readme = readRepositoryFile("README.md"); From a1ef74b46309bc68d9f8fcbe472cb0895c7a3336 Mon Sep 17 00:00:00 2001 From: mohammed naji Date: Fri, 31 Jul 2026 09:01:20 +0400 Subject: [PATCH 2/2] test: enforce v0.5.5 release boundaries --- tests/release-version.test.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/release-version.test.ts b/tests/release-version.test.ts index 510f775..0a354de 100644 --- a/tests/release-version.test.ts +++ b/tests/release-version.test.ts @@ -84,10 +84,11 @@ describe("v0.5.5 release artifacts", () => { expect(changedNotes).toContain(`[#${issue}](https://github.com/mohanagy/miftah/issues/${issue})`); } expect(notes).toMatch(/task-first/iu); - expect(notes).toMatch(/named account profiles/iu); - expect(notes).toContain("miftah_use_profile"); - expect(notes).toContain("How authentication works"); - expect(notes).toMatch(/external validation remains incomplete/iu); + expect(notes).toMatch( + /named account profiles, durable default, and whether live in-session switching through `miftah_use_profile` is available/iu + ); + expect(notes).toContain("collapsed behind **How authentication works**"); + expect(notes).toContain("external validation remains incomplete under #25, #88, and #202"); const readme = readRepositoryFile("README.md"); const featureGuide = readRepositoryFile("docs/whats-new-in-0.5.md");