From e9617b2758cfedd952ef2b610ba26dbe97ea303a Mon Sep 17 00:00:00 2001 From: mohammed naji Date: Fri, 31 Jul 2026 21:40:46 +0400 Subject: [PATCH] release: prepare v0.5.6 --- CHANGELOG.md | 7 +++++++ 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 | 32 +++++++++++++++----------------- 7 files changed, 29 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58c4b25..f61bac6 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.6] - 2026-07-31 + +### Fixed + +- [#325](https://github.com/mohanagy/miftah/issues/325) Made Console setup completion and account switching remain actionable through overlapping refreshes and reauthentication. Successful setup now keeps its client handoff and focus without overriding the unlock screen; stale session responses cannot replace a newer configuration, status, or generated client entry; and Save draft, Resume draft, and readiness actions recover after successful reauthentication. Existing authentication, redaction, audit, no-shell subprocess, file-containment, Windows, and public API boundaries are unchanged. +- [#327](https://github.com/mohanagy/miftah/issues/327) Prepared the compatible v0.5.6 patch release for the Console actionability correction. 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.5] - 2026-07-31 ### Changed diff --git a/README.md b/README.md index 73a840f..ff77c8f 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.5 +npm install -g @lubab/miftah@0.5.6 miftah version ``` diff --git a/docs/presets-and-clients.md b/docs/presets-and-clients.md index a6acf92..66dca69 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.5` +- Miftah package version: `0.5.6` - 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 310e8d5..11541b8 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.5` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: +Install `@lubab/miftah@0.5.6` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: ```bash -npm install -g @lubab/miftah@0.5.5 +npm install -g @lubab/miftah@0.5.6 miftah version ``` diff --git a/package-lock.json b/package-lock.json index 4f4ba69..f48202a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lubab/miftah", - "version": "0.5.5", + "version": "0.5.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lubab/miftah", - "version": "0.5.5", + "version": "0.5.6", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", diff --git a/package.json b/package.json index ba8e92c..e0340e1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lubab/miftah", - "version": "0.5.5", + "version": "0.5.6", "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 0a354de..1b800af 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.5"; +const releaseVersion = "0.5.6"; 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.5 release artifacts", () => { +describe("v0.5.6 release artifacts", () => { it.each([ { name: "a non-zero-padded date", - changelog: "## [0.5.5] - 2026-7-31\n\n### Changed\n" + changelog: "## [0.5.6] - 2026-7-31\n\n### Fixed\n" }, { name: "a heading that does not start its line", - changelog: "Release candidate: ## [0.5.5] - 2026-07-31\n\n### Changed\n" + changelog: "Release candidate: ## [0.5.6] - 2026-07-31\n\n### Fixed\n" } ])("rejects $name", ({ changelog }) => { expect(() => releaseNotes(changelog, releaseVersion)).toThrow( @@ -71,24 +71,22 @@ describe("v0.5.5 release artifacts", () => { } }); - it("documents the task-first Console while retaining the experimental package status", () => { + it("documents the actionable Console patch 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("### 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 [202, 319]) { - expect(changedNotes).toContain(`[#${issue}](https://github.com/mohanagy/miftah/issues/${issue})`); + 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 [325, 327]) { + expect(fixedNotes).toContain(`[#${issue}](https://github.com/mohanagy/miftah/issues/${issue})`); } - expect(notes).toMatch(/task-first/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"); + expect(notes).toMatch(/setup completion/iu); + expect(notes).toMatch(/stale.*session.*responses/iu); + expect(notes).toMatch(/reauthentication/iu); + expect(notes).toContain("external validation remains incomplete under #25, #88, #202, and #290"); const readme = readRepositoryFile("README.md"); const featureGuide = readRepositoryFile("docs/whats-new-in-0.5.md");