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
6 changes: 3 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
10 changes: 5 additions & 5 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
4 changes: 2 additions & 2 deletions packages/core/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion packages/server/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/server/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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']);

Expand Down
2 changes: 1 addition & 1 deletion packages/ui/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@freemodelfinder/ui",
"version": "0.1.0-rc.1",
"version": "0.1.0-rc.2",
"private": true,
"type": "module",
"scripts": {
Expand Down