Skip to content

Commit 0150552

Browse files
authored
Merge branch 'main' into blove/basecamp-homepage-design-34a935
2 parents 3c9d6bc + 2e6197f commit 0150552

11 files changed

Lines changed: 52 additions & 36 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
## 0.0.63 (2026-08-31)
2+
3+
### 🚀 Features
4+
5+
- move all packages to MIT ([#881](https://github.com/cacheplane/angular-agent-framework/pull/881))
6+
- **examples/chat:** announce the research subagent's stream identity ([#874](https://github.com/cacheplane/angular-agent-framework/pull/874))
7+
- **website:** unify all fonts onto the next/font variables ([#876](https://github.com/cacheplane/angular-agent-framework/pull/876))
8+
- **website:** redesign pricing and licensing journey ([#875](https://github.com/cacheplane/angular-agent-framework/pull/875))
9+
10+
### 🩹 Fixes
11+
12+
- **proxy:** remove unauthenticated _proxy_debug disclosure endpoint ([#882](https://github.com/cacheplane/angular-agent-framework/pull/882))
13+
- **website:** AnnouncementToast mobile presentation and a11y ([#877](https://github.com/cacheplane/angular-agent-framework/pull/877))
14+
- **website:** fit meta descriptions to the search-snippet budget ([#880](https://github.com/cacheplane/angular-agent-framework/pull/880), [#826](https://github.com/cacheplane/angular-agent-framework/issues/826))
15+
116
## 0.0.62 (2026-08-30)
217

318
### 🚀 Features

libs/a2ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@threadplane/a2ui",
3-
"version": "0.0.62",
3+
"version": "0.0.63",
44
"license": "MIT",
55
"repository": {
66
"type": "git",

libs/ag-ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@threadplane/ag-ui",
3-
"version": "0.0.62",
3+
"version": "0.0.63",
44
"description": "AG-UI protocol adapter for @threadplane/chat — works with any AG-UI-compatible backend.",
55
"keywords": [
66
"angular",

libs/chat/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@threadplane/chat",
3-
"version": "0.0.62",
3+
"version": "0.0.63",
44
"exports": {
55
"./chat.css": "./chat.css",
66
"./themes/default-dark.css": "./themes/default-dark.css",

libs/langgraph/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@threadplane/langgraph",
3-
"version": "0.0.62",
3+
"version": "0.0.63",
44
"description": "LangGraph adapter for @threadplane/chat — Angular bindings for LangGraph Platform.",
55
"keywords": [
66
"angular",

libs/render/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@threadplane/render",
3-
"version": "0.0.62",
3+
"version": "0.0.63",
44
"peerDependencies": {
55
"@angular/core": "^20.0.0 || ^21.0.0",
66
"@angular/common": "^20.0.0 || ^21.0.0",

libs/telemetry/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@threadplane/telemetry",
3-
"version": "0.0.62",
3+
"version": "0.0.63",
44
"license": "MIT",
55
"publishConfig": {
66
"access": "public"

nx.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
"workspaceChangelog": {
7272
"createRelease": "github",
7373
"renderOptions": {
74-
"authors": true,
74+
"authors": false,
7575
"commitReferences": true,
7676
"versionTitleDate": true
7777
}

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/langgraph-proxy.spec.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,30 @@ describe('createProxyHandler', () => {
150150
expect(res._status).toBe(200);
151151
});
152152

153+
// Regression: `/_proxy_debug` was an unauthenticated early-return that
154+
// disclosed a prefix of LANGSMITH_API_KEY, the upstream deployment URL, and
155+
// environment facts to any caller. It sat above the origin/rate-limit gates,
156+
// and the origin allowlist only rejects when an Origin header is present, so
157+
// a plain curl reached it on production. It must stay a normal proxied path.
158+
it('does not answer /_proxy_debug locally or disclose key material', async () => {
159+
const fetchMock = vi.spyOn(global, 'fetch').mockResolvedValue(
160+
new Response('{"detail":"Not Found"}', { status: 404, headers: { 'content-type': 'application/json' } }),
161+
);
162+
const handler = createProxyHandler({ backendUrl: DEFAULT_BACKEND });
163+
const res = makeRes();
164+
await handler({ method: 'GET', headers: { host: 'demo.threadplane.ai' }, url: '/api/_proxy_debug', query: {} } as never, res as never);
165+
166+
// Forwarded upstream like any other path rather than short-circuited here.
167+
expect(fetchMock).toHaveBeenCalledTimes(1);
168+
expect(fetchMock.mock.calls[0]![0]).toBe(`${DEFAULT_BACKEND}/_proxy_debug`);
169+
170+
// Nothing the proxy itself wrote may carry the key or its prefix.
171+
const written = JSON.stringify([res.json.mock.calls, res.send.mock.calls, res.write.mock.calls]);
172+
expect(written).not.toContain('test-key-123');
173+
expect(written).not.toContain('test-key-1');
174+
expect(written).not.toContain('apiKeyPrefix');
175+
});
176+
153177
it('strips the catch-all query param but keeps real query params', async () => {
154178
const fetchMock = vi.spyOn(global, 'fetch').mockResolvedValue(
155179
new Response('{}', { status: 200, headers: { 'content-type': 'application/json' } }),

0 commit comments

Comments
 (0)