Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file. The format

## [Unreleased]

## [0.5.8] - 2026-08-09

### Fixed

- [#347](https://github.com/mohanagy/miftah/issues/347) Made upstream startup failures actionable without exposing configuration or credential material. Runtime warnings remain concise and point to the exact `miftah test-profile` command; `test-profile` and `doctor` now surface a bounded, secret-redacted failure cause and remediation. Diagnostics also recognize pinned `uvx` package invocations while retaining the existing fail-closed startup boundary.

### Changed

- [#349](https://github.com/mohanagy/miftah/pull/349) Refreshed the compatible `dotenv`, ESLint, and TypeScript ESLint dependencies after the full supported Node and operating-system matrix passed. The deferred Vitest 4 and TypeScript 7 major upgrades are not part of this release.
- [#350](https://github.com/mohanagy/miftah/issues/350) Prepared the compatible v0.5.8 patch release for actionable upstream-startup diagnostics and the safe dependency refresh. 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.7] - 2026-08-01

### Changed
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.7
npm install -g @lubab/miftah@0.5.8
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.7`
- Miftah package version: `0.5.8`
- 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.7` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand:
Install `@lubab/miftah@0.5.8` when you want Miftah to guide setup instead of assembling a multi-account configuration by hand:

```bash
npm install -g @lubab/miftah@0.5.7
npm install -g @lubab/miftah@0.5.8
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.7",
"version": "0.5.8",
"description": "Wrap any MCP. Use the right account without reconnecting.",
"keywords": [
"mcp",
Expand Down
36 changes: 21 additions & 15 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.7";
const releaseVersion = "0.5.8";

function readRepositoryFile(path: string): string {
return readFileSync(new URL(`../${path}`, import.meta.url), "utf8");
Expand All @@ -21,15 +21,15 @@ function releaseNotes(changelog: string, version: string): string {
return changelog.slice(match.index, end < 0 ? undefined : end);
}

describe("v0.5.7 release artifacts", () => {
describe("v0.5.8 release artifacts", () => {
it.each([
{
name: "a non-zero-padded date",
changelog: "## [0.5.7] - 2026-8-1\n\n### Changed\n"
changelog: "## [0.5.8] - 2026-8-9\n\n### Changed\n"
},
{
name: "a heading that does not start its line",
changelog: "Release candidate: ## [0.5.7] - 2026-08-01\n\n### Changed\n"
changelog: "Release candidate: ## [0.5.8] - 2026-08-09\n\n### Changed\n"
}
])("rejects $name", ({ changelog }) => {
expect(() => releaseNotes(changelog, releaseVersion)).toThrow(
Expand Down Expand Up @@ -71,22 +71,28 @@ describe("v0.5.7 release artifacts", () => {
}
});

it("documents the Console usability patch while retaining the experimental package status", () => {
it("documents actionable startup diagnostics and the safe maintenance refresh", () => {
const changelog = readRepositoryFile("CHANGELOG.md");
const notes = releaseNotes(changelog, releaseVersion);

expect(notes).toContain("Miftah remains experimental and pre-1.0");
expect(notes).toContain("### Fixed");
expect(notes).toContain("[#347](https://github.com/mohanagy/miftah/issues/347)");
expect(notes).toMatch(
/Runtime warnings remain concise and point to the exact `miftah test-profile` command/iu,
);
expect(notes).toMatch(
/`test-profile` and `doctor` now surface a bounded, secret-redacted failure cause and remediation/iu,
);
expect(notes).toContain("uvx");
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(/account switching/iu);
expect(notes).toMatch(/task sections/iu);
expect(notes).toMatch(/setup.*user language/iu);
expect(notes).toMatch(/responsive/iu);
expect(notes).toContain("[#349](https://github.com/mohanagy/miftah/pull/349)");
expect(notes).toContain("[#350](https://github.com/mohanagy/miftah/issues/350)");
expect(notes).toMatch(/dependency/iu);
Comment thread
coderabbitai[bot] marked this conversation as resolved.
expect(notes).toMatch(/\bdotenv\b/iu);
expect(notes).toMatch(/TypeScript ESLint/iu);
expect(notes).toContain("Vitest 4");
expect(notes).toContain("TypeScript 7");
expect(notes).toContain("external validation remains incomplete under #25, #88, #202, and #290");

const readme = readRepositoryFile("README.md");
Expand Down