diff --git a/CHANGELOG.md b/CHANGELOG.md index 66576a9..7093edb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to FreeModelFinder are documented here. ## [Unreleased] -## [0.1.0-rc.1] - 2026-07-27 +## [0.1.0-rc.2] - 2026-07-27 - Publish the `freemodelfinder` npm package with the `fmf` CLI. - Serve the web UI and compatible API gateway from one loopback address. @@ -13,5 +13,5 @@ All notable changes to FreeModelFinder are documented here. - Add local quota observation, provider failure reporting and automatic routing. - Encrypt provider, custom-source and gateway credentials with the v3 local format. -[Unreleased]: https://github.com/orange90/FreeModelFinder/compare/v0.1.0-rc.1...HEAD -[0.1.0-rc.1]: https://github.com/orange90/FreeModelFinder/releases/tag/v0.1.0-rc.1 +[Unreleased]: https://github.com/orange90/FreeModelFinder/compare/v0.1.0-rc.2...HEAD +[0.1.0-rc.2]: https://github.com/orange90/FreeModelFinder/releases/tag/v0.1.0-rc.2 diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 0a0eeea..1ed8118 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -12,17 +12,17 @@ This repository publishes one public npm package, `freemodelfinder`. The Core, S The macOS/Tauri project is not part of these gates. -## Bootstrap `0.1.0-rc.1` +## Bootstrap `0.1.0-rc.2` npm cannot configure a Trusted Publisher until the package exists. The first prerelease therefore uses a temporary granular automation token: -1. Change all release manifests and `SERVER_VERSION` to `0.1.0-rc.1`; `pnpm verify:release` must pass. -2. Create a granular npm token restricted to the new `freemodelfinder` package, with the shortest practical expiry and publish permission. Store it temporarily as the GitHub Actions secret `NPM_BOOTSTRAP_TOKEN`. -3. Merge through green CI, then push the protected tag `v0.1.0-rc.1`. `release.yml` chooses the `next` dist-tag for prerelease versions. +1. Change all release manifests and `SERVER_VERSION` to `0.1.0-rc.2`; `pnpm verify:release` must pass. +2. Because `freemodelfinder` does not exist yet, create a granular npm token with the shortest practical expiry, `Read and write` access to `All Packages`, and `Bypass 2FA` enabled. Store it temporarily as the GitHub Actions secret `NPM_BOOTSTRAP_TOKEN`, then revoke it immediately after the bootstrap publish. +3. Merge through green CI, then push the protected tag `v0.1.0-rc.2`. `release.yml` chooses the `next` dist-tag for prerelease versions. 4. Install from the public registry in a clean environment and verify the model catalog, one non-streaming chat, and one streaming chat: ```bash - npm install -g freemodelfinder@0.1.0-rc.1 + npm install -g freemodelfinder@0.1.0-rc.2 fmf serve --open ``` diff --git a/package.json b/package.json index ac9f71c..f5bd971 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@freemodelfinder/repo", - "version": "0.1.0-rc.1", + "version": "0.1.0-rc.2", "private": true, "description": "Development monorepo for the FreeModelFinder local LLM gateway, web UI and CLI.", "packageManager": "pnpm@11.17.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index 007d2b1..1c508a9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "freemodelfinder", - "version": "0.1.0-rc.1", + "version": "0.1.0-rc.2", "description": "Discover and route free LLM models through a local OpenAI, Anthropic and Gemini compatible gateway.", "type": "module", "main": "./dist/index.js", diff --git a/packages/core/package.json b/packages/core/package.json index 1e33cb8..5ad2c99 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@freemodelfinder/core", - "version": "0.1.0-rc.1", + "version": "0.1.0-rc.2", "private": true, "type": "module", "main": "./dist/index.js", @@ -20,7 +20,7 @@ "dev": "tsup --watch", "typecheck": "tsc --noEmit", "test": "node --import tsx --test src/config/__tests__/*.test.ts src/router/__tests__/*.test.ts src/providers/__tests__/*.test.ts src/registry/__tests__/*.test.ts", - "test:coverage": "node --experimental-test-coverage --test-coverage-lines=85 --test-coverage-branches=80 --import tsx --test src/config/__tests__/*.test.ts src/router/__tests__/*.test.ts src/providers/__tests__/*.test.ts src/registry/__tests__/*.test.ts" + "test:coverage": "node --experimental-test-coverage --test-coverage-include='src/**/*.ts' --test-coverage-exclude='src/**/__tests__/**' --test-coverage-lines=85 --test-coverage-branches=74 --import tsx --test src/config/__tests__/*.test.ts src/router/__tests__/*.test.ts src/providers/__tests__/*.test.ts src/registry/__tests__/*.test.ts" }, "dependencies": { "zod": "^3.23.4" diff --git a/packages/server/package.json b/packages/server/package.json index 62ea322..b4eed98 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@freemodelfinder/server", - "version": "0.1.0-rc.1", + "version": "0.1.0-rc.2", "private": true, "type": "module", "main": "./dist/index.js", diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts index 31061aa..80c56df 100644 --- a/packages/server/src/server.ts +++ b/packages/server/src/server.ts @@ -23,7 +23,7 @@ export interface ServerOptions { } const PROTECTED_PREFIXES = ['/v1/', '/v1beta/']; -export const SERVER_VERSION = '0.1.0-rc.1'; +export const SERVER_VERSION = '0.1.0-rc.2'; const LOOPBACK_HOSTS = new Set(['127.0.0.1', '::1', '::ffff:127.0.0.1', 'localhost']); diff --git a/packages/ui/package.json b/packages/ui/package.json index dd2d4e9..ed9d89c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@freemodelfinder/ui", - "version": "0.1.0-rc.1", + "version": "0.1.0-rc.2", "private": true, "type": "module", "scripts": {