diff --git a/CHANGELOG.md b/CHANGELOG.md index c4831aa..4018dec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,15 @@ All notable changes to this project will be documented in this file. The format ## [Unreleased] +## [0.5.7] - 2026-08-01 + ### Changed - [#334](https://github.com/mohanagy/miftah/issues/334) Tightened the Console connection catalog for faster scanning: cards use a compact hierarchy for the connection name, durable default, named-account actions, authentication status, and Manage connection action; medium and narrow layouts collapse before controls can crowd or clip; and long account or connection names wrap without hiding status counts or keyboard focus. Existing authentication, redaction, audit, containment, no-shell, and public API guarantees are unchanged. - [#333](https://github.com/mohanagy/miftah/issues/333) Replaced first-use Console setup vocabulary with task-oriented language: the chooser now leads with **Choose your MCP**, groups built-in and custom options plainly, names custom MCP, local executable, remote HTTPS, browser sign-in, existing-client-entry, and secret-reference paths distinctly, and limits help text to the information needed for the next step. The wording does not claim universal MCP or OAuth compatibility, and existing authentication, redaction, audit, containment, no-shell, and public API guarantees are unchanged. - [#332](https://github.com/mohanagy/miftah/issues/332) Turned Console management navigation into five focused, keyboard-accessible sections: Overview, Accounts, Authentication, Client setup, and Audit. Only the selected task is shown; the non-secret URL fragment restores a valid selection after refresh or reauthentication, while switching tasks leaves in-page form drafts untouched and performs no writes. Destructive account removal remains confined to Accounts, and existing redaction, audit, OAuth, containment, no-shell, and public API guarantees are unchanged. - [#331](https://github.com/mohanagy/miftah/issues/331) Made Console account switching read like a user action: each named account now offers a client-specific `Use in this chat` action, copied-request confirmation names the account and selected client, and the durable default is described as applying to new MCP sessions. Shared guidance appears once instead of on every connection card. The existing `miftah_use_profile` request, supported clients, redaction, audit, credential handling, containment, and public APIs are unchanged. +- [#339](https://github.com/mohanagy/miftah/issues/339) Prepared the compatible v0.5.7 patch release for clearer account switching, focused task sections, setup written in user language, and a responsive connection catalog. 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.6] - 2026-07-31 diff --git a/README.md b/README.md index ff77c8f..552239a 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.6 +npm install -g @lubab/miftah@0.5.7 miftah version ``` diff --git a/docs/presets-and-clients.md b/docs/presets-and-clients.md index 66dca69..336157a 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.6` +- Miftah package version: `0.5.7` - 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 11541b8..782cf17 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.6` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: +Install `@lubab/miftah@0.5.7` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand: ```bash -npm install -g @lubab/miftah@0.5.6 +npm install -g @lubab/miftah@0.5.7 miftah version ``` diff --git a/package-lock.json b/package-lock.json index f48202a..1912ade 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lubab/miftah", - "version": "0.5.6", + "version": "0.5.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lubab/miftah", - "version": "0.5.6", + "version": "0.5.7", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", diff --git a/package.json b/package.json index e0340e1..4cf54c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lubab/miftah", - "version": "0.5.6", + "version": "0.5.7", "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 1b800af..e7325b3 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.6"; +const releaseVersion = "0.5.7"; 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.6 release artifacts", () => { +describe("v0.5.7 release artifacts", () => { it.each([ { name: "a non-zero-padded date", - changelog: "## [0.5.6] - 2026-7-31\n\n### Fixed\n" + changelog: "## [0.5.7] - 2026-8-1\n\n### Changed\n" }, { name: "a heading that does not start its line", - changelog: "Release candidate: ## [0.5.6] - 2026-07-31\n\n### Fixed\n" + changelog: "Release candidate: ## [0.5.7] - 2026-08-01\n\n### Changed\n" } ])("rejects $name", ({ changelog }) => { expect(() => releaseNotes(changelog, releaseVersion)).toThrow( @@ -71,21 +71,22 @@ describe("v0.5.6 release artifacts", () => { } }); - it("documents the actionable Console patch while retaining the experimental package status", () => { + it("documents the Console usability 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("### 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).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(/setup completion/iu); - expect(notes).toMatch(/stale.*session.*responses/iu); - expect(notes).toMatch(/reauthentication/iu); + 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("external validation remains incomplete under #25, #88, #202, and #290"); const readme = readRepositoryFile("README.md");