Skip to content

Commit 83288da

Browse files
author
Brian Genisio
committed
merge upstream/main
2 parents bb2055f + 0103b4b commit 83288da

693 files changed

Lines changed: 50739 additions & 20708 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 89 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ DOMAIN_CLIENT=http://localhost:3080
2020
DOMAIN_SERVER=http://localhost:3080
2121

2222
NO_INDEX=true
23-
# Use the address that is at most n number of hops away from the Express application.
24-
# req.socket.remoteAddress is the first hop, and the rest are looked for in the X-Forwarded-For header from right to left.
23+
# Use the address that is at most n number of hops away from the Express application.
24+
# req.socket.remoteAddress is the first hop, and the rest are looked for in the X-Forwarded-For header from right to left.
2525
# A value of 0 means that the first untrusted address would be req.socket.remoteAddress, i.e. there is no reverse proxy.
2626
# Defaulted to 1.
2727
TRUST_PROXY=1
@@ -95,7 +95,7 @@ PROXY=
9595
#============#
9696

9797
# ANTHROPIC_API_KEY=user_provided
98-
# ANTHROPIC_MODELS=claude-3-7-sonnet-latest,claude-3-7-sonnet-20250219,claude-3-5-haiku-20241022,claude-3-5-sonnet-20241022,claude-3-5-sonnet-latest,claude-3-5-sonnet-20240620,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307,claude-2.1,claude-2,claude-1.2,claude-1,claude-1-100k,claude-instant-1,claude-instant-1-100k
98+
# ANTHROPIC_MODELS=claude-opus-4-20250514,claude-sonnet-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307
9999
# ANTHROPIC_REVERSE_PROXY=
100100

101101
#============#
@@ -450,6 +450,47 @@ OPENID_IMAGE_URL=
450450
# Set to true to automatically redirect to the OpenID provider when a user visits the login page
451451
# This will bypass the login form completely for users, only use this if OpenID is your only authentication method
452452
OPENID_AUTO_REDIRECT=false
453+
# Set to true to use PKCE (Proof Key for Code Exchange) for OpenID authentication
454+
OPENID_USE_PKCE=false
455+
#Set to true to reuse openid tokens for authentication management instead of using the mongodb session and the custom refresh token.
456+
OPENID_REUSE_TOKENS=
457+
#By default, signing key verification results are cached in order to prevent excessive HTTP requests to the JWKS endpoint.
458+
#If a signing key matching the kid is found, this will be cached and the next time this kid is requested the signing key will be served from the cache.
459+
#Default is true.
460+
OPENID_JWKS_URL_CACHE_ENABLED=
461+
OPENID_JWKS_URL_CACHE_TIME= # 600000 ms eq to 10 minutes leave empty to disable caching
462+
#Set to true to trigger token exchange flow to acquire access token for the userinfo endpoint.
463+
OPENID_ON_BEHALF_FLOW_FOR_USERINFRO_REQUIRED=
464+
OPENID_ON_BEHALF_FLOW_USERINFRO_SCOPE = "user.read" # example for Scope Needed for Microsoft Graph API
465+
# Set to true to use the OpenID Connect end session endpoint for logout
466+
OPENID_USE_END_SESSION_ENDPOINT=
467+
468+
469+
# SAML
470+
# Note: If OpenID is enabled, SAML authentication will be automatically disabled.
471+
SAML_ENTRY_POINT=
472+
SAML_ISSUER=
473+
SAML_CERT=
474+
SAML_CALLBACK_URL=/oauth/saml/callback
475+
SAML_SESSION_SECRET=
476+
477+
# Attribute mappings (optional)
478+
SAML_EMAIL_CLAIM=
479+
SAML_USERNAME_CLAIM=
480+
SAML_GIVEN_NAME_CLAIM=
481+
SAML_FAMILY_NAME_CLAIM=
482+
SAML_PICTURE_CLAIM=
483+
SAML_NAME_CLAIM=
484+
485+
# Logint buttion settings (optional)
486+
SAML_BUTTON_LABEL=
487+
SAML_IMAGE_URL=
488+
489+
# Whether the SAML Response should be signed.
490+
# - If "true", the entire `SAML Response` will be signed.
491+
# - If "false" or unset, only the `SAML Assertion` will be signed (default behavior).
492+
# SAML_USE_AUTHN_RESPONSE_SIGNED=
493+
453494

454495
# LDAP
455496
LDAP_URL=
@@ -481,6 +522,18 @@ EMAIL_PASSWORD=
481522
EMAIL_FROM_NAME=
482523
EMAIL_FROM=noreply@librechat.ai
483524

525+
#========================#
526+
# Mailgun API #
527+
#========================#
528+
529+
# MAILGUN_API_KEY=your-mailgun-api-key
530+
# MAILGUN_DOMAIN=mg.yourdomain.com
531+
# EMAIL_FROM=noreply@yourdomain.com
532+
# EMAIL_FROM_NAME="LibreChat"
533+
534+
# # Optional: For EU region
535+
# MAILGUN_HOST=https://api.eu.mailgun.net
536+
484537
#========================#
485538
# Firebase CDN #
486539
#========================#
@@ -570,9 +623,9 @@ HELP_AND_FAQ_URL=https://librechat.ai
570623
# users always get the latest version. Customize #
571624
# only if you understand caching implications. #
572625

573-
# INDEX_HTML_CACHE_CONTROL=no-cache, no-store, must-revalidate
574-
# INDEX_HTML_PRAGMA=no-cache
575-
# INDEX_HTML_EXPIRES=0
626+
# INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
627+
# INDEX_PRAGMA=no-cache
628+
# INDEX_EXPIRES=0
576629

577630
# no-cache: Forces validation with server before using cached version
578631
# no-store: Prevents storing the response entirely
@@ -582,3 +635,33 @@ HELP_AND_FAQ_URL=https://librechat.ai
582635
# OpenWeather #
583636
#=====================================================#
584637
OPENWEATHER_API_KEY=
638+
639+
#====================================#
640+
# LibreChat Code Interpreter API #
641+
#====================================#
642+
643+
# https://code.librechat.ai
644+
# LIBRECHAT_CODE_API_KEY=your-key
645+
646+
#======================#
647+
# Web Search #
648+
#======================#
649+
650+
# Note: All of the following variable names can be customized.
651+
# Omit values to allow user to provide them.
652+
653+
# For more information on configuration values, see:
654+
# https://librechat.ai/docs/features/web_search
655+
656+
# Search Provider (Required)
657+
# SERPER_API_KEY=your_serper_api_key
658+
659+
# Scraper (Required)
660+
# FIRECRAWL_API_KEY=your_firecrawl_api_key
661+
# Optional: Custom Firecrawl API URL
662+
# FIRECRAWL_API_URL=your_firecrawl_api_url
663+
664+
# Reranker (Required)
665+
# JINA_API_KEY=your_jina_api_key
666+
# or
667+
# COHERE_API_KEY=your_cohere_api_key

.github/CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ Project maintainers have the right and responsibility to remove, edit, or reject
3030
2. Install typescript globally: `npm i -g typescript`.
3131
3. Run `npm ci` to install dependencies.
3232
4. Build the data provider: `npm run build:data-provider`.
33-
5. Build MCP: `npm run build:mcp`.
34-
6. Build data schemas: `npm run build:data-schemas`.
33+
5. Build data schemas: `npm run build:data-schemas`.
34+
6. Build API methods: `npm run build:api`.
3535
7. Setup and run unit tests:
3636
- Copy `.env.test`: `cp api/test/.env.test.example api/test/.env.test`.
3737
- Run backend unit tests: `npm run test:api`.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Docker Dev Branch Images Build
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- dev
8+
paths:
9+
- 'api/**'
10+
- 'client/**'
11+
- 'packages/**'
12+
13+
jobs:
14+
build:
15+
runs-on: ubuntu-latest
16+
strategy:
17+
matrix:
18+
include:
19+
- target: api-build
20+
file: Dockerfile.multi
21+
image_name: lc-dev-api
22+
- target: node
23+
file: Dockerfile
24+
image_name: lc-dev
25+
26+
steps:
27+
# Check out the repository
28+
- name: Checkout
29+
uses: actions/checkout@v4
30+
31+
# Set up QEMU
32+
- name: Set up QEMU
33+
uses: docker/setup-qemu-action@v3
34+
35+
# Set up Docker Buildx
36+
- name: Set up Docker Buildx
37+
uses: docker/setup-buildx-action@v3
38+
39+
# Log in to GitHub Container Registry
40+
- name: Log in to GitHub Container Registry
41+
uses: docker/login-action@v2
42+
with:
43+
registry: ghcr.io
44+
username: ${{ github.actor }}
45+
password: ${{ secrets.GITHUB_TOKEN }}
46+
47+
# Login to Docker Hub
48+
- name: Login to Docker Hub
49+
uses: docker/login-action@v3
50+
with:
51+
username: ${{ secrets.DOCKERHUB_USERNAME }}
52+
password: ${{ secrets.DOCKERHUB_TOKEN }}
53+
54+
# Prepare the environment
55+
- name: Prepare environment
56+
run: |
57+
cp .env.example .env
58+
59+
# Build and push Docker images for each target
60+
- name: Build and push Docker images
61+
uses: docker/build-push-action@v5
62+
with:
63+
context: .
64+
file: ${{ matrix.file }}
65+
push: true
66+
tags: |
67+
ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:${{ github.sha }}
68+
ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:latest
69+
${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:${{ github.sha }}
70+
${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:latest
71+
platforms: linux/amd64,linux/arm64
72+
target: ${{ matrix.target }}

.gitignore

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ bower_components/
5252
*.d.ts
5353
!vite-env.d.ts
5454

55-
# Cline
55+
# AI
5656
.clineignore
57+
.cursor
5758

5859
# Floobits
5960
.floo
@@ -113,4 +114,13 @@ uploads/
113114

114115
# owner
115116
release/
117+
118+
# Helm
119+
helm/librechat/Chart.lock
120+
helm/**/charts/
121+
helm/**/.values.yaml
122+
116123
!/client/src/@types/i18next.d.ts
124+
125+
# SAML Idp cert
126+
*.cert

CHANGELOG.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,72 @@ All notable changes to this project will be documented in this file.
44

55

66

7+
8+
9+
710
## [Unreleased]
811

12+
### ✨ New Features
13+
14+
- ✨ feat: implement search parameter updates by **@mawburn** in [#7151](https://github.com/danny-avila/LibreChat/pull/7151)
15+
- 🎏 feat: Add MCP support for Streamable HTTP Transport by **@benverhees** in [#7353](https://github.com/danny-avila/LibreChat/pull/7353)
16+
- 🔒 feat: Add Content Security Policy using Helmet middleware by **@rubentalstra** in [#7377](https://github.com/danny-avila/LibreChat/pull/7377)
17+
- ✨ feat: Add Normalization for MCP Server Names by **@danny-avila** in [#7421](https://github.com/danny-avila/LibreChat/pull/7421)
18+
- 📊 feat: Improve Helm Chart by **@hofq** in [#3638](https://github.com/danny-avila/LibreChat/pull/3638)
19+
- 🦾 feat: Claude-4 Support by **@danny-avila** in [#7509](https://github.com/danny-avila/LibreChat/pull/7509)
20+
- 🪨 feat: Bedrock Support for Claude-4 Reasoning by **@danny-avila** in [#7517](https://github.com/danny-avila/LibreChat/pull/7517)
21+
22+
### 🌍 Internationalization
23+
24+
- 🌍 i18n: Add `Danish` and `Czech` and `Catalan` localization support by **@rubentalstra** in [#7373](https://github.com/danny-avila/LibreChat/pull/7373)
25+
- 🌍 i18n: Update translation.json with latest translations by **@github-actions[bot]** in [#7375](https://github.com/danny-avila/LibreChat/pull/7375)
26+
- 🌍 i18n: Update translation.json with latest translations by **@github-actions[bot]** in [#7468](https://github.com/danny-avila/LibreChat/pull/7468)
27+
28+
### 🔧 Fixes
29+
30+
- 💬 fix: update aria-label for accessibility in ConvoLink component by **@berry-13** in [#7320](https://github.com/danny-avila/LibreChat/pull/7320)
31+
- 🔑 fix: use `apiKey` instead of `openAIApiKey` in OpenAI-like Config by **@danny-avila** in [#7337](https://github.com/danny-avila/LibreChat/pull/7337)
32+
- 🔄 fix: update navigation logic in `useFocusChatEffect` to ensure correct search parameters are used by **@mawburn** in [#7340](https://github.com/danny-avila/LibreChat/pull/7340)
33+
- 🔄 fix: Improve MCP Connection Cleanup by **@danny-avila** in [#7400](https://github.com/danny-avila/LibreChat/pull/7400)
34+
- 🛡️ fix: Preset and Validation Logic for URL Query Params by **@danny-avila** in [#7407](https://github.com/danny-avila/LibreChat/pull/7407)
35+
- 🌘 fix: artifact of preview text is illegible in dark mode by **@nhtruong** in [#7405](https://github.com/danny-avila/LibreChat/pull/7405)
36+
- 🛡️ fix: Temporarily Remove CSP until Configurable by **@danny-avila** in [#7419](https://github.com/danny-avila/LibreChat/pull/7419)
37+
- 💽 fix: Exclude index page `/` from static cache settings by **@sbruel** in [#7382](https://github.com/danny-avila/LibreChat/pull/7382)
38+
39+
### ⚙️ Other Changes
40+
41+
- 📜 docs: CHANGELOG for release v0.7.8 by **@github-actions[bot]** in [#7290](https://github.com/danny-avila/LibreChat/pull/7290)
42+
- 📦 chore: Update API Package Dependencies by **@danny-avila** in [#7359](https://github.com/danny-avila/LibreChat/pull/7359)
43+
- 📜 docs: Unreleased Changelog by **@github-actions[bot]** in [#7321](https://github.com/danny-avila/LibreChat/pull/7321)
44+
- 📜 docs: Unreleased Changelog by **@github-actions[bot]** in [#7434](https://github.com/danny-avila/LibreChat/pull/7434)
45+
- 🛡️ chore: `multer` v2.0.0 for CVE-2025-47935 and CVE-2025-47944 by **@danny-avila** in [#7454](https://github.com/danny-avila/LibreChat/pull/7454)
46+
- 📂 refactor: Improve `FileAttachment` & File Form Deletion by **@danny-avila** in [#7471](https://github.com/danny-avila/LibreChat/pull/7471)
47+
- 📊 chore: Remove Old Helm Chart by **@hofq** in [#7512](https://github.com/danny-avila/LibreChat/pull/7512)
48+
- 🪖 chore: bump helm app version to v0.7.8 by **@austin-barrington** in [#7524](https://github.com/danny-avila/LibreChat/pull/7524)
49+
50+
51+
52+
---
53+
## [v0.7.8] -
54+
55+
Changes from v0.7.8-rc1 to v0.7.8.
56+
57+
### ✨ New Features
58+
59+
- ✨ feat: Enhance form submission for touch screens by **@berry-13** in [#7198](https://github.com/danny-avila/LibreChat/pull/7198)
60+
- 🔍 feat: Additional Tavily API Tool Parameters by **@glowforge-opensource** in [#7232](https://github.com/danny-avila/LibreChat/pull/7232)
61+
- 🐋 feat: Add python to Dockerfile for increased MCP compatibility by **@technicalpickles** in [#7270](https://github.com/danny-avila/LibreChat/pull/7270)
62+
963
### 🔧 Fixes
1064

1165
- 🔧 fix: Google Gemma Support & OpenAI Reasoning Instructions by **@danny-avila** in [#7196](https://github.com/danny-avila/LibreChat/pull/7196)
1266
- 🛠️ fix: Conversation Navigation State by **@danny-avila** in [#7210](https://github.com/danny-avila/LibreChat/pull/7210)
67+
- 🔄 fix: o-Series Model Regex for System Messages by **@danny-avila** in [#7245](https://github.com/danny-avila/LibreChat/pull/7245)
68+
- 🔖 fix: Custom Headers for Initial MCP SSE Connection by **@danny-avila** in [#7246](https://github.com/danny-avila/LibreChat/pull/7246)
69+
- 🛡️ fix: Deep Clone `MCPOptions` for User MCP Connections by **@danny-avila** in [#7247](https://github.com/danny-avila/LibreChat/pull/7247)
70+
- 🔄 fix: URL Param Race Condition and File Draft Persistence by **@danny-avila** in [#7257](https://github.com/danny-avila/LibreChat/pull/7257)
71+
- 🔄 fix: Assistants Endpoint & Minor Issues by **@danny-avila** in [#7274](https://github.com/danny-avila/LibreChat/pull/7274)
72+
- 🔄 fix: Ollama Think Tag Edge Case with Tools by **@danny-avila** in [#7275](https://github.com/danny-avila/LibreChat/pull/7275)
1373

1474
### ⚙️ Other Changes
1575

@@ -18,8 +78,16 @@ All notable changes to this project will be documented in this file.
1878
- 📦 chore: Bump Package Security by **@danny-avila** in [#7183](https://github.com/danny-avila/LibreChat/pull/7183)
1979
- 🌿 refactor: Unmount Fork Popover on Hide for Better Performance by **@danny-avila** in [#7189](https://github.com/danny-avila/LibreChat/pull/7189)
2080
- 🧰 chore: ESLint configuration to enforce Prettier formatting rules by **@mawburn** in [#7186](https://github.com/danny-avila/LibreChat/pull/7186)
81+
- 🎨 style: Improve KaTeX Rendering for LaTeX Equations by **@andresgit** in [#7223](https://github.com/danny-avila/LibreChat/pull/7223)
82+
- 📝 docs: Update `.env.example` Google models by **@marlonka** in [#7254](https://github.com/danny-avila/LibreChat/pull/7254)
83+
- 💬 refactor: MCP Chat Visibility Option, Google Rates, Remove OpenAPI Plugins by **@danny-avila** in [#7286](https://github.com/danny-avila/LibreChat/pull/7286)
84+
- 📜 docs: Unreleased Changelog by **@github-actions[bot]** in [#7214](https://github.com/danny-avila/LibreChat/pull/7214)
85+
86+
2187

88+
[See full release details][release-v0.7.8]
2289

90+
[release-v0.7.8]: https://github.com/danny-avila/LibreChat/releases/tag/v0.7.8
2391

2492
---
2593
## [v0.7.8-rc1] -

Dockerfile.multi

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ RUN npm config set fetch-retry-maxtimeout 600000 && \
1414
npm config set fetch-retry-mintimeout 15000
1515
COPY package*.json ./
1616
COPY packages/data-provider/package*.json ./packages/data-provider/
17-
COPY packages/mcp/package*.json ./packages/mcp/
17+
COPY packages/api/package*.json ./packages/api/
1818
COPY packages/data-schemas/package*.json ./packages/data-schemas/
1919
COPY client/package*.json ./client/
2020
COPY api/package*.json ./api/
@@ -24,26 +24,27 @@ FROM base-min AS base
2424
WORKDIR /app
2525
RUN npm ci
2626

27-
# Build data-provider
27+
# Build `data-provider` package
2828
FROM base AS data-provider-build
2929
WORKDIR /app/packages/data-provider
3030
COPY packages/data-provider ./
3131
RUN npm run build
3232

33-
# Build mcp package
34-
FROM base AS mcp-build
35-
WORKDIR /app/packages/mcp
36-
COPY packages/mcp ./
37-
COPY --from=data-provider-build /app/packages/data-provider/dist /app/packages/data-provider/dist
38-
RUN npm run build
39-
40-
# Build data-schemas
33+
# Build `data-schemas` package
4134
FROM base AS data-schemas-build
4235
WORKDIR /app/packages/data-schemas
4336
COPY packages/data-schemas ./
4437
COPY --from=data-provider-build /app/packages/data-provider/dist /app/packages/data-provider/dist
4538
RUN npm run build
4639

40+
# Build `api` package
41+
FROM base AS api-package-build
42+
WORKDIR /app/packages/api
43+
COPY packages/api ./
44+
COPY --from=data-provider-build /app/packages/data-provider/dist /app/packages/data-provider/dist
45+
COPY --from=data-schemas-build /app/packages/data-schemas/dist /app/packages/data-schemas/dist
46+
RUN npm run build
47+
4748
# Client build
4849
FROM base AS client-build
4950
WORKDIR /app/client
@@ -63,8 +64,8 @@ RUN npm ci --omit=dev
6364
COPY api ./api
6465
COPY config ./config
6566
COPY --from=data-provider-build /app/packages/data-provider/dist ./packages/data-provider/dist
66-
COPY --from=mcp-build /app/packages/mcp/dist ./packages/mcp/dist
6767
COPY --from=data-schemas-build /app/packages/data-schemas/dist ./packages/data-schemas/dist
68+
COPY --from=api-package-build /app/packages/api/dist ./packages/api/dist
6869
COPY --from=client-build /app/client/dist ./client/dist
6970
WORKDIR /app/api
7071
EXPOSE 3080

0 commit comments

Comments
 (0)