@akira-tl/forgerelay 1.3.4 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable ForgeRelay changes are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.3.5] - 2026-11-04
8
+
9
+ ### Fixed
10
+
11
+ - OAuth Dynamic Client Registration 默认不再绑定 ChatGPT 等厂商 redirect host 名单:现在接受任意 HTTPS callback 以及 localhost / 127.0.0.1 / ::1 的 HTTP/HTTPS loopback callback;显式 `FORGERELAY_OAUTH_ALLOWED_REDIRECT_HOSTS` 继续作为可选收紧策略。Gemini Connected Apps 等标准 MCP Host 可以通过 `/register` 获取 ForgeRelay 签发的 `forgerelay-<uuid>` client ID,同时未知 client ID、未注册 redirect URI、PKCE 与 Owner OAuth 校验保持不变。
12
+
7
13
  ## [1.3.4] - 2026-10-29
8
14
 
9
15
  ### Added
@@ -12,7 +12,9 @@ function redirectHostAllowed(redirectUri, allowedHosts) {
12
12
  const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(parsed.hostname);
13
13
  if (loopback)
14
14
  return parsed.protocol === "http:" || parsed.protocol === "https:";
15
- return parsed.protocol === "https:" && allowedHosts.includes(parsed.hostname);
15
+ if (parsed.protocol !== "https:")
16
+ return false;
17
+ return allowedHosts.length === 0 || allowedHosts.includes(parsed.hostname);
16
18
  }
17
19
  export class SqliteOAuthStore {
18
20
  database;
@@ -184,11 +184,7 @@ function parseOAuthConfig(env, ownerToken) {
184
184
  accessTokenTtlSeconds: parsePositiveInteger(productEnv(env, "OAUTH_ACCESS_TOKEN_TTL_SECONDS"), DEFAULT_OAUTH_ACCESS_TOKEN_TTL_SECONDS, "FORGERELAY_OAUTH_ACCESS_TOKEN_TTL_SECONDS"),
185
185
  refreshTokenTtlSeconds: parsePositiveInteger(productEnv(env, "OAUTH_REFRESH_TOKEN_TTL_SECONDS"), DEFAULT_OAUTH_REFRESH_TOKEN_TTL_SECONDS, "FORGERELAY_OAUTH_REFRESH_TOKEN_TTL_SECONDS"),
186
186
  scopes: parseStringList(productEnv(env, "OAUTH_SCOPES"), ["forgerelay"]),
187
- allowedRedirectHosts: parseStringList(productEnv(env, "OAUTH_ALLOWED_REDIRECT_HOSTS"), [
188
- "chatgpt.com",
189
- "localhost",
190
- "127.0.0.1",
191
- ]),
187
+ allowedRedirectHosts: parseStringList(productEnv(env, "OAUTH_ALLOWED_REDIRECT_HOSTS"), []),
192
188
  };
193
189
  }
194
190
  function defaultStateDir() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akira-tl/forgerelay",
3
- "version": "1.3.4",
3
+ "version": "1.3.5",
4
4
  "description": "Local development control plane for MCP coding agents.",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/Akira-TL/forgerelay#readme",