Merge mia-dev into claude/hopeful-heisenberg-gbq809 - #13
Merged
npeham merged 100 commits intoJun 23, 2026
Merged
Conversation
…peline-gh-action feat/MIA-85-librechat-build-pipeline-gh-action
… in ChatForm - Added functionality to adjust form position when the virtual keyboard appears on Android Edge, ensuring the input field remains visible. - Implemented event handlers to manage margin adjustments on focus and blur of the textarea. - Relates to LibreChat issue danny-avila#10074 MIA-113
- Updated the keyboard overlay fix to specifically target Android Edge versions 141 and greater. - Relates to danny-avila#10074 MIA-113
…ut-field-android-edge Fix/mia 113 keyboard hides input field android edge
… in ChatForm component based on v0.8.0 MIA-113
…ut-field-android-edge-v0.8.0 fix/MIA-113-keyboard-hides-input-field-android-edge-v0.8.0
Chore/latest fork 05 11 2025 2
Chore/release 0.8.1-rc1
build: add custom pp assets
… container to ACR
…-to-release-branch build: add GitHub Actions workflow for building and pushing LibreChat
…nd push to ACR - Simplified branch specification for push events. - Added environment variables for image name and tag. - Enhanced Azure login step to use OIDC. - Added sanity check for ACR before login. - Updated Docker image tags to use environment variables for better maintainability.
…-to-release-branch chore: update GitHub Actions workflow for LibreChat container build a…
- Eliminated the hotfix for the Android Edge browser keyboard overlay issue because Edge fixed it in their latest release - Relates to danny-avila#10074 MIA-113
…roid-edge-keyboard-hotfix chore: remove Android Edge keyboard overlay hotfix code
- Eliminated the hotfix for the Android Edge browser keyboard overlay issue as it is no longer necessary. - This change simplifies the ChatForm component by removing unused code related to keyboard focus handling. MIA-113
Chore/main rv0.8.1 rc1 with release into main
Update from Upstream
Merge pull request #2 from pcode-at/feat/MIA-204-add-image-generation…
…iB cap Image generation tools (DALL-E, Flux, Stable Diffusion, OpenAI image_gen/edit) returned raw base64 images as tool_results, which Anthropic rejects when the decoded image exceeds 5 MiB. Adds a shared sharp-based downscaler in packages/api and routes all four tools through it. Per-image budget is configurable via IMAGE_TOOL_RESULT_MAX_FILE_SIZE_BYTES (default 2.5 MiB).
Switches the in-chat Image Generation toggle from gemini_image_gen to image_gen_oai (gpt-image-1), and uses IMAGE_TOOL_RESULT_MAX_FILE_SIZE_BYTES to derive sensible OpenAI API defaults (output_format=WebP, output_compression, default size and quality). This way OpenAI returns a smaller image directly instead of us shrinking it after the fact, which also keeps downstream LLM image-input tokens lower. The post-generation downscaler now re-encodes at full resolution first (WebP/JPEG q85) before falling back to actual resizing, so resolution — and therefore image-token cost — is preserved whenever format conversion alone is enough to meet the budget. Also wires the downscaler into GeminiImageGen.js, which was missed in the first pass.
Azure OpenAI's gpt-image-1 deployment rejects webp ("Supported values are:
'png' and 'jpeg'."). JPEG works on both Azure and the direct OpenAI API, so
the budget-derived defaults now use JPEG. Transparent backgrounds still fall
back to PNG since JPEG can't represent transparency.
…OpenAIImageTools MIA-204
…e generation tools MIA-204
Fix image generation issues
…e-generation-menu Feat/mia 204 add image generation menu
Sync with upstream
Merge main into mia-dev
The chat tools menu image-generation toggle wired the `image_generation` ephemeral-agent flag to OpenAI's `image_gen_oai` tool. Map it to `gemini_image_gen` so generating an image directly from chat uses Google's Gemini image model, matching the tool available in the agent builder. https://claude.ai/code/session_01FXXDoDUkqrSVzzAhh9fpCH
Gemini Image Tools emitted lossless PNGs at full resolution, which could exceed 10 MB. When such an image is returned in a tool result to an Anthropic model, the request is rejected (5 MiB per-image limit). Default the output format to WebP and add a size-enforcement step that re-compresses and progressively downscales any image whose base64 payload would exceed a safe threshold, so the result is accepted by every provider. https://claude.ai/code/session_01FXXDoDUkqrSVzzAhh9fpCH
The 5 MiB per-image cap for tool-result images lived only in the Gemini image tool, so DALL-E, Flux, Stable Diffusion and the OpenAI image tools could still emit oversized base64 payloads that Anthropic rejects. Extract `enforceImageSizeLimit` into `@librechat/api` (packages/api) as a shared, mimeType-based helper and apply it in every image-generation tool before the base64 data URL is built, so any generated image is accepted by every provider. https://claude.ai/code/session_01GgQN1WiYYeZx2RdPttST9i
…fig-ZCJht Extract image size limiting to shared utility module
…ration-chat-SMSfE feat/MIA-204 - image generation from chat
…i-image-gen-from-chat-menu Feat/mia 204 gemini image gen from chat menu
…e is provided
replaceSpecialVars previously short-circuited the timezone branch whenever
an explicit `now` value was passed, so backend callers that supply both
`conversationCreatedAt` and `clientTimezone` (e.g. agent initialization)
rendered `{{current_datetime}}` in the server's local zone instead of the
user's browser timezone.
Also fixes a pre-existing bug in the dayjs test mock that referenced an
out-of-scope `input` variable, and adds regression coverage for the
combined anchor-time + timezone case.
Sync with Upstream
…arthy-ZB6v5 # Conflicts: # api/app/clients/tools/structured/DALLE3.js
Release v0.8.6: Add RUM, file retention, build info, and test coverage
Fix timezone handling in replaceSpecialVars with anchor time
Sync with Upstream Main
Sync with Upstream Main
Merge Main into Mia-Dev
…senberg-gbq809 # Conflicts: # api/app/clients/tools/structured/DALLE3.js # api/app/clients/tools/structured/FluxAPI.js # api/app/clients/tools/structured/GeminiImageGen.js # api/app/clients/tools/structured/OpenAIImageTools.js # packages/api/src/agents/added.ts
npeham
changed the base branch from
mia-dev
to
fix/MIA-229-MIA-230-microphone-render-mcp-allowlist
June 23, 2026 18:57
npeham
marked this pull request as ready for review
June 23, 2026 18:57
npeham
merged commit Jun 23, 2026
de5d64a
into
fix/MIA-229-MIA-230-microphone-render-mcp-allowlist
21 of 25 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merged
origin/mia-devintoclaude/hopeful-heisenberg-gbq809and resolved all merge conflicts. No important code was dropped — conflicting changes from both sides were preserved.The repository was a shallow clone with no common ancestor across the branches; unshallowing restored the real merge base (
d680763d), turning an apparent unrelated-history merge into a normal 3-way merge.Conflicts resolved (5 files)
Image tool import lists — both branches added different named imports from
@librechat/api; unioned the imports that are actually used in the merged bodies:api/app/clients/tools/structured/DALLE3.js— keptgetProxyDispatcher,getEnvProxyDispatcher(ours) +enforceImageSizeLimit(mia-dev)api/app/clients/tools/structured/GeminiImageGen.js— keptgetEnvProxyDispatcher(ours) +enforceImageSizeLimit(mia-dev)api/app/clients/tools/structured/OpenAIImageTools.js— keptgetProxyDispatcher,applyAxiosProxyConfig(ours) +enforceImageSizeLimit,resolveImageGenOaiDefaults(mia-dev)api/app/clients/tools/structured/FluxAPI.js— addedenforceImageSizeLimit(mia-dev). Dropped mia-dev's rawHttpsProxyAgentimport because our branch's centralized proxy handling (getHttpsProxyAgent/applyAxiosProxyConfig) replaced the rawnew HttpsProxyAgent(...)usage in the merged body — keeping it would be an unused import.packages/api/src/agents/added.ts— mia-dev re-declaredconst ephemeralAgent, but our branch already declares it earlier. Removed the duplicate declaration and added mia-dev'simage_generation?: booleanfield to the single surviving declaration's type so the mergedephemeralAgent?.image_generationusage still compiles. Both features preserved.Verification
@librechat/api(files/images,utils/image,utils/proxy).node --checkpasses on all four edited JS files.🤖 Generated with Claude Code
Generated by Claude Code