# What's Changed

- **To update:** run `npm run update` from the project directory for a clean installation.
  - **Prerequisites:** git and npm installed
  - **Recommended:** clear localStorage and cookies

### ⚠️ Breaking Change

It's now required to set a **JWT_REFRESH_SECRET** in your .env file as of [#927](https://github.com/danny-avila/LibreChat/pull/927)

> It's also recommended you update your `SESSION_EXPIRY` to a lower value and set `REFRESH_TOKEN_EXPIRY`
> Default values: session expiry: 15 minutes, refresh token expiry: 7 days
> _See **[.env.example](https://github.com/danny-avila/LibreChat/blob/1378eb5097b666a4add27923e47be73919957e5b/.env.example#L314)** for exact values in millisecond calculation_

## 🛠️ New Features

- 🛡️ Refresh Token for Improved Session Security by [@bsu3338](https://github.com/bsu3338) & [@danny-avila](https://github.com/danny-avila) in [#927](https://github.com/danny-avila/LibreChat/pull/927)
- 🛡️ Message Rate Limiters, Violation Logging, & Ban System 🔨 by [@danny-avila](https://github.com/danny-avila) in [#903](https://github.com/danny-avila/LibreChat/pull/903)
- 🛡️ Stricter AI Message Rendering to Prevent XSS by [@danny-avila](https://github.com/danny-avila) in [#893](https://github.com/danny-avila/LibreChat/pull/893)
- 🛡️ Encrypt & Expire User Provided Keys, Rate Limiting by [@danny-avila](https://github.com/danny-avila) in [#874](https://github.com/danny-avila/LibreChat/pull/874)
- OpenRouter Support & Improve Model Fetching ⇆ by [@danny-avila](https://github.com/danny-avila) in [#936](https://github.com/danny-avila/LibreChat/pull/936)
- Add Confirm Dialog to Conversation Delete Button by [@Berry-13](https://github.com/Berry-13) in [#875](https://github.com/danny-avila/LibreChat/pull/875)
- Bun Support 🥟 by [@danny-avila](https://github.com/danny-avila) in [#907](https://github.com/danny-avila/LibreChat/pull/907)
- Icons for Chat Identification by [@Berry-13](https://github.com/Berry-13) in [#879](https://github.com/danny-avila/LibreChat/pull/879)
- CodeBrew Plugin by [@Falven](https://github.com/Falven) in [#931](https://github.com/danny-avila/LibreChat/pull/931)
- Auto-detect Browser language by [@Berry-13](https://github.com/Berry-13) in [#947](https://github.com/danny-avila/LibreChat/pull/947)

## 🌐 Internationalization

- Update Zh.tsx by [@yuanmu0814](https://github.com/yuanmu0814) in [#862](https://github.com/danny-avila/LibreChat/pull/862)
- Italian Translation for User Provided Keys and Data Controls by [@Berry-13](https://github.com/Berry-13) in [#886](https://github.com/danny-avila/LibreChat/pull/886)
- Updated Portuguese, Spanish translations by [@itzraiss](https://github.com/itzraiss) in [#857](https://github.com/danny-avila/LibreChat/pull/857), [#876](https://github.com/danny-avila/LibreChat/pull/876), [#888](https://github.com/danny-avila/LibreChat/pull/888), [#898](https://github.com/danny-avila/LibreChat/pull/898)
- Japanese Translation by [@forestsource](https://github.com/forestsource) in [#895](https://github.com/danny-avila/LibreChat/pull/895)
- Swedish Translation by [@yoHasse](https://github.com/yoHasse) in [#940](https://github.com/danny-avila/LibreChat/pull/940)

## 🔧 Fixes

- Match OpenAI Token Counting Strategy 🪙 by [@danny-avila](https://github.com/danny-avila) in [#945](https://github.com/danny-avila/LibreChat/pull/945)
- Add More Translation Text & Minor UI Fixes by [@Berry-13](https://github.com/Berry-13) in [#861](https://github.com/danny-avila/LibreChat/pull/861)
- Fix Docker Install Guide Broken Link by [@finnless](https://github.com/finnless) in [#877](https://github.com/danny-avila/LibreChat/pull/877)
- Fix Various Broken Docker_compose_install.md Links in Docs by [@GovernmentPlates](https://github.com/GovernmentPlates) in [#882](https://github.com/danny-avila/LibreChat/pull/882)
- Devcontainer Image and Networking by [@finnless](https://github.com/finnless) in [#891](https://github.com/danny-avila/LibreChat/pull/891)
- Aborted Messages Not Saving by [@danny-avila](https://github.com/danny-avila) in [#894](https://github.com/danny-avila/LibreChat/pull/894)
- Duplicate Key Error in Translation by [@danny-avila](https://github.com/danny-avila) in [#906](https://github.com/danny-avila/LibreChat/pull/906)
- Module Resolution for Create-user Script 👤 by [@danny-avila](https://github.com/danny-avila) in [#935](https://github.com/danny-avila/LibreChat/pull/935)
- Only Include Fields Defined by API Reference in Payload by [@danny-avila](https://github.com/danny-avila) in [#933](https://github.com/danny-avila/LibreChat/pull/933), [#938](https://github.com/danny-avila/LibreChat/pull/938)
- Allow Latin-based Special Characters in Username by [@danny-avila](https://github.com/danny-avila) in [#969](https://github.com/danny-avila/LibreChat/pull/969)

## 📝 Documentation

- Make_your_own.md Formatting Fix for Mkdocs by [@danny-avila](https://github.com/danny-avila) in [#855](https://github.com/danny-avila/LibreChat/pull/855)
- Hugging Face Deployment by [@fuegovic](https://github.com/fuegovic) in [#867](https://github.com/danny-avila/LibreChat/pull/867)
- Free API Documentation Update by [@Berry-13](https://github.com/Berry-13) in [#902](https://github.com/danny-avila/LibreChat/pull/902)
- Update Huggingface.md by [@fuegovic](https://github.com/fuegovic) in [#942](https://github.com/danny-avila/LibreChat/pull/942)

## ⚙️ Other Changes

- Enhance DB Schemas/Controllers and Improve E2E Tests by [@danny-avila](https://github.com/danny-avila) in [#966](https://github.com/danny-avila/LibreChat/pull/966)
- Hide Source Map from Client by [@danny-avila](https://github.com/danny-avila) in [#905](https://github.com/danny-avila/LibreChat/pull/905)
- Update: Install Script by [@fuegovic](https://github.com/fuegovic) in [#858](https://github.com/danny-avila/LibreChat/pull/858)
- Bump Packages, Fix Langchain Peer Dep Issue by [@danny-avila](https://github.com/danny-avila) in [#883](https://github.com/danny-avila/LibreChat/pull/883)
- Add Zod to All Workspaces as is Used Individually by Each by [@danny-avila](https://github.com/danny-avila) in [#884](https://github.com/danny-avila/LibreChat/pull/884)
- Bump Data-provider by [@danny-avila](https://github.com/danny-avila) in [#885](https://github.com/danny-avila/LibreChat/pull/885)
- Organize Root Directory Files 🧹 by [@danny-avila](https://github.com/danny-avila) in [#887](https://github.com/danny-avila/LibreChat/pull/887)
- Remove Unused Dependencies 🧹 by [@danny-avila](https://github.com/danny-avila) in [#939](https://github.com/danny-avila/LibreChat/pull/939)
- Refactor(.env.example) by [@Berry-13](https://github.com/Berry-13) in [#880](https://github.com/danny-avila/LibreChat/pull/880)
- Initialize Ban Env Vars in JestSetup by [@danny-avila](https://github.com/danny-avila) in [#937](https://github.com/danny-avila/LibreChat/pull/937)

## New Contributors

- [@yuanmu0814](https://github.com/yuanmu0814) made their first contribution in [#862](https://github.com/danny-avila/LibreChat/pull/862)
- [@finnless](https://github.com/finnless) made their first contribution in [#877](https://github.com/danny-avila/LibreChat/pull/877)
- [@GovernmentPlates](https://github.com/GovernmentPlates) made their first contribution in [#882](https://github.com/danny-avila/LibreChat/pull/882)
- [@forestsource](https://github.com/forestsource) made their first contribution in [#895](https://github.com/danny-avila/LibreChat/pull/895)
- [@Falven](https://github.com/Falven) made their first contribution in [#931](https://github.com/danny-avila/LibreChat/pull/931)
- [@yoHasse](https://github.com/yoHasse) made their first contribution in [#940](https://github.com/danny-avila/LibreChat/pull/940)
