Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```

Expand Down
2 changes: 1 addition & 1 deletion docs/presets-and-clients.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions docs/whats-new-in-0.5.md
Original file line number Diff line number Diff line change
@@ -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
```

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
27 changes: 13 additions & 14 deletions tests/release-version.test.ts
Original file line number Diff line number Diff line change
@@ -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");
Expand All @@ -21,10 +21,10 @@ 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"
"## [0.5.3] - 2026-7-30\n\n### Changed\n",
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
"Release candidate: ## [0.5.3] - 2026-07-30\n\n### Changed\n"
])("requires a dated release heading at the start of a line", (changelog) => {
expect(() => releaseNotes(changelog, releaseVersion)).toThrow(
`Unable to find the ${releaseVersion} changelog entry.`
Expand Down Expand Up @@ -65,21 +65,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");
Expand Down