Skip to content

chore(release): promote release to master#42047

Open
appsmith-smithes[bot] wants to merge 36 commits into
masterfrom
release
Open

chore(release): promote release to master#42047
appsmith-smithes[bot] wants to merge 36 commits into
masterfrom
release

Conversation

@appsmith-smithes

@appsmith-smithes appsmith-smithes Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Description

Promotes the release branch into master.

Commits included

Automation

/ok-to-test tags="@tag.All"

Communication

Should the DevRel and Marketing teams be notified?

  • Yes
  • No

Caution

🔴 🔴 🔴 Some tests have failed.
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/30107746760
Commit: 6c17eaa
Cypress dashboard.
Tags: @tag.All
Spec:
The following are new failures, please fix them before merging the PR:

  1. cypress/e2e/Regression/ClientSide/AdminSettings/Email_settings_Spec.ts
List of identified flaky tests.
Fri, 24 Jul 2026 17:12:03 UTC

appsmith-smithes Bot and others added 30 commits July 9, 2026 02:52
## Summary
Batch security update via resolutions/version bumps.

### Resolved alerts
- Resolves #675 — js-yaml → ^3.15.0 (medium severity)

No code changes — version bumps and resolutions only.

/ok-to-test tags="@tag.All"

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/28928697841>
> Commit: 5cb7fa9
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=28928697841&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 08 Jul 2026 10:53:52 UTC
<!-- end of auto-generated comment: Cypress test results  -->

Co-authored-by: appsmith-smithes[bot] <appsmith-smithes[bot]@users.noreply.github.com>
## Description
> [!TIP]  
> _Add a TL;DR when the description is longer than 500 words or
extremely technical (helps the content, marketing, and DevRel team)._
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._

Fixes
https://linear.app/appsmith/issue/APP-15377/removal-of-controller-layer
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.Git"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/28963240802>
> Commit: d0bdd99
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=28963240802&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Wed, 08 Jul 2026 17:58:38 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Revert**
* Removed the Git management endpoints from the application, including
connect/disconnect, branch operations, commit/push/pull, merge checks,
import flows, protected branch settings, and auto-commit controls.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary

CE `release` currently **does not compile**. PR #41968 ("git controller
delete") removed `GitControllerCE` but left its orphaned subclass
`GitController`, which still `extends GitControllerCE` / imports the
deleted class — the **only** remaining reference:

```
GitController.java: cannot find symbol — class GitControllerCE
```

This deletes the legacy `GitController` shell, completing the removal.
It had no routes of its own (just `@RequestMapping(Url.GIT_URL)` +
`extends GitControllerCE` + a constructor); the git API is served by the
newer `git/controllers` layer — `GitApplicationController`
(`GIT_APPLICATION_URL`, owns `create-ref`) and `GitArtifactController`
(`GIT_ARTIFACT_URL`). **EE already removed this shell in #9281 and runs
without it**, so this brings CE in line with the intended end state.

## Verification

A local build is blocked by toolchain (server requires JDK 25), but the
deletion is confirmed safe by:
- **No code references the concrete `GitController` class** anywhere
(Spring component-scan controller, referenced by nobody).
- **EE `release` already compiles and passes `server-unit-tests` without
this class** — a real compile proof from a JDK-25 environment.

## Note on CI

Ironically, this PR's own `server-unit-tests` reports green **without
compiling**, because the `changed-files` path gate misses the
server-file deletion and skips the Build step (the same false-pass that
let #41968 break `release`). That gate defect is real but **separate** —
being handled in its own change. `fetch-depth` was investigated and
ruled out as the cause.

<!-- This is an auto-generated comment: Cypress test results  -->
> [!WARNING]
> Tests have not run on the HEAD
32da40d yet
> <hr>Thu, 09 Jul 2026 15:24:24 UTC
<!-- end of auto-generated comment: Cypress test results  -->

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
**Linear:** [APP-15350](https://linear.app/appsmith/issue/APP-15350)

## Summary

Defense-in-depth hardening of the Docker image. The bundled internal
services are bound to the loopback interface (`127.0.0.1`) by default so
they only accept connections from within the container and are not
reachable over the container's bridge network interface.

## Changes

- **RTS** (`server.ts`): bind the RTS listener to `127.0.0.1`.
- **Backend server** (`application-ce.properties`): default
`server.address` to `127.0.0.1` (overridable via
`APPSMITH_SERVER_ADDRESS`).
- **Redis** (`entrypoint.sh`): add `bind 127.0.0.1 -::1` to the
generated Redis config.

These services are internal to the image and are fronted by the
in-container Caddy proxy, so they do not need to listen on the
container's external interfaces.

## Testing

All services continue to be reached through the existing in-container
proxy paths.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* RTS server now binds to an explicit configured host by defaulting to
loopback (`127.0.0.1`) and using the configured RTS port.
* App server now defaults to loopback (`127.0.0.1`) unless overridden by
`APPSMITH_SERVER_ADDRESS`.
* Redis now listens only on loopback (`127.0.0.1`/`::1`) by default for
safer local-only access.
* **Documentation**
* Updated Docker documentation to reflect **Caddy** supervision and
restart examples instead of **Nginx**.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

<!-- This is an auto-generated comment: Cypress test results  -->
> [!WARNING]
> Tests have not run on the HEAD
d685989 yet
> <hr>Wed, 08 Jul 2026 14:59:26 UTC
<!-- end of auto-generated comment: Cypress test results  -->

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nset (GHSA-xfc5-796c-7hr9) (#41964)

## What

The `/actuator/**` management endpoints are protected by HTTP Basic auth
that compares the supplied password against
`APPSMITH_INTERNAL_PASSWORD`. That variable defaults to an empty string
when unset (`application-ce.properties`:
`appsmith.internal.password=${APPSMITH_INTERNAL_PASSWORD:}`), so the
check `"".equals("")` succeeds for any request sending empty Basic Auth
credentials — granting the `INTERNAL` authority and bypassing
authentication on the actuator endpoints.

This guards the comparison so an unset/empty configured password never
authenticates any caller. All `/actuator/**` requests then return `401`
until an operator explicitly sets `APPSMITH_INTERNAL_PASSWORD`.

## Why it matters

- On a default deployment the exposed actuator surface is `prometheus`
and `metrics` (per `application-ee.properties`), plus `health` on CE —
so the practical pre-fix impact is unauthenticated read access to
operational metrics, not secrets.
- Impact escalates if an operator widens
`management.endpoints.web.exposure.include` (e.g. to include
`env`/`heapdump`).
- Ref: GHSA-xfc5-796c-7hr9 (and duplicate GHSA-8pr2-629w-7q87).

## Change

Single-file change in `SecurityConfig.internalWebFilterChain`. No new
imports (uses `String.isEmpty()`), so the hunk applies cleanly to EE via
the hourly sync.

## Testing

- Before: `curl -u 'anyuser:' https://<host>/actuator/prometheus` →
`200`
- After: same request → `401`; `200` only when
`APPSMITH_INTERNAL_PASSWORD` is set and matched.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Improved access handling for internal actuator endpoints when basic
authentication credentials are empty or missing.
* Prevented empty or unset internal passwords from being treated as a
valid match, so requests now correctly follow the unauthenticated path
when no valid credentials are configured.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

<!-- This is an auto-generated comment: Cypress test results  -->
> [!WARNING]
> Tests have not run on the HEAD
2b58fc3 yet
> <hr>Wed, 08 Jul 2026 02:34:56 UTC
<!-- end of auto-generated comment: Cypress test results  -->

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
## Summary
Batch security update via resolutions/version bumps.

### Resolved alerts
- Resolves #660 — ws → ^8.21.0 (transitive npm dep bumped via
resolutions; addresses DoS vulnerability)

### Skipped
- #676 echarts → 6.1.0 (major bump 5.x → 6.x, skip)
- #654 @opentelemetry/core → 2.8.0 (major bump 1.x → 2.x, skip)

No code changes — resolutions entry only.

/ok-to-test tags="@tag.All"

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/28990538280>
> Commit: b30be0e
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=28990538280&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Thu, 09 Jul 2026 04:08:54 UTC
<!-- end of auto-generated comment: Cypress test results  -->

Co-authored-by: appsmith-smithes[bot] <appsmith-smithes[bot]@users.noreply.github.com>
## Description
A potential corruption of repo is a possible when git in memory feature
is active and git repo is cached in redis,
A sanity check has been placed for git operations when repository is
downloaded from Redis. It checks
- Presence of .git folder
- Compares checksum of repo with branch key


Fixes
#https://linear.app/appsmith/issue/APP-15285/git-connection-issue-persists-for-appsmith-treasury-app

## Automation

/ok-to-test tags="@tag.Git"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29080326412>
> Commit: 6cbf5a2
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29080326412&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Fri, 10 Jul 2026 08:54:58 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Improved reliability when loading cached Git data by verifying
repository integrity and branch information before continuing.
* Automatically clears invalid cached data and stops the download if the
repository looks corrupted or incomplete.
* Added checks for missing Git metadata, missing branches, and
mismatched commit data.

* **Tests**
* Added coverage for Git repository sanity checks, including valid
repositories and several invalid repository states.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…tities during import (#41972)

## Problem

Creating a git branch (`create-ref`) imports the exported artifact, and
the import reconciles entities against **all sibling branches** via
`getExistingResourcesInOtherBranchesFlux`. Both the `ActionCollection`
and `NewAction` implementations fetched **full documents** across every
branch `applicationId` with no projection, pulling the heavy
`unpublished*/published*` action bodies for thousands of entities in a
single transaction.

For git-connected apps with many branches this can exceed Mongo's
`transactionLifetimeLimitSeconds`, aborting the transaction with
`TransactionExceededLifetimeLimitSeconds` and making branch operations
fail. Observed in a customer environment: an `applicationId $in [~120
ids]` read on `actionCollection` returning ~15k documents (~400 MB, ~27
KB/doc) inside the import transaction, killed at 60s.

## Fix

Pass a field projection (`id, baseId, applicationId, gitSyncId,
policies`) instead of `null` so only the fields the import actually
consumes are loaded. This mirrors the existing `NewPage` import path,
which already projects exactly these fields for the same other-branches
lookup.

## Why this is safe

The sibling-branch objects are **read-only** during import: only
`gitSyncId` (the lookup map key) and `baseId`/`id` (base-id resolution)
are consumed downstream, and these objects are never mutated or written
back to Mongo. Projecting away the heavy body fields cannot cause data
loss.


## Automation

/ok-to-test tags="@tag.ImportExport"

## Scope

-
`ActionCollectionApplicationImportableServiceCEImpl.getExistingResourcesInOtherBranchesFlux`
-
`NewActionApplicationImportableServiceCEImpl.getExistingResourcesInOtherBranchesFlux`

`ModuleInstanceApplicationImportableServiceImpl` has the same
`null`-projection pattern and will be addressed separately.

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29083663032>
> Commit: 162f736
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29083663032&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.ImportExport`
> Spec:
> <hr>Fri, 10 Jul 2026 10:03:20 UTC
<!-- end of auto-generated comment: Cypress test results  -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Improved branch import reliability by restricting lookups to only the
fields required for matching and resolution, instead of loading full
documents.
* This reduces unnecessary data retrieval and processing during
cross-branch comparisons, making imports more efficient and consistent.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: sondermanish <manish@appsmith.com>
…ll (#41975)

## Problem

`GitUtilsTest.isRepoPrivate` intermittently fails in CI with `expected:
false`. The test asserted against **real** URLs — including
`github.com/appsmithorg/appsmith` — and `GitUtils.isRepoPrivate`
performs a **live HTTP GET** against the repo URL (2xx ⇒ public,
otherwise/error ⇒ private) with a **2-second timeout**:

```java
return WebClientUtils.create(remoteHttpsUrl).get()
        .httpRequest(r -> r.getNativeRequest().responseTimeout(Duration.ofSeconds(2)))
        .exchange()
        .flatMap(resp -> Mono.just(!resp.statusCode().is2xxSuccessful()))
        .onErrorResume(t -> Mono.just(Boolean.TRUE)); // error ⇒ assume private
```

So whenever the CI runner can't reach GitHub within 2s (shared-runner
rate-limits, DNS blips), the error path returns `TRUE` (private) and the
`expected: false` (public) assertion fails — non-deterministically,
independent of the change under test. This is almost certainly the flake
behind the intermittently-red scheduled release builds too.

## Fix

Make the test hermetic: mock `WebClientUtils.create` so the request hits
a local `MockWebServer` instead of the internet, and assert the real
branching logic deterministically — **200 ⇒ public**, **404 ⇒ private**.

`WebClientUtils.create` is mocked (rather than pointing `isRepoPrivate`
straight at the loopback server) because it wraps every `WebClient` in
an SSRF host filter that would block a loopback address. URL-conversion
coverage is untouched — `convertSshUrlToBrowserSupportedUrl` has its own
dedicated test.

No new dependencies (`mockwebserver` + `mockito-inline` are already test
deps). Verified locally on JDK 25: `Tests run: 18, Failures: 0`.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
* Updated repository privacy checks to use fully mocked HTTP responses
instead of real network calls.
* Added coverage for both accessible and inaccessible repository
responses, improving test reliability and stability.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…go replica-set error (#41963)

## Description
`ConnectionErrors_Spec.ts`'s "3. Mongo connection errors" test asserts
the exact same toast message twice in a row (`REPLICA_SET connections
should not be given a port...`) — once right after switching Connection
type to "Replica set", and again right after filling in host/port. Every
other repeated-message check in this same spec calls
`WaitUntilAllToastsDisappear()` in between; this one didn't.

Toastify doesn't reliably mount a new DOM node for an identical message
while the previous instance is still visible/fading, so the second
`ValidateToastMessage` call can time out waiting for
`div.Toastify__toast` — intermittently, depending on exact timing. This
caused a real CI failure on an unrelated release-promotion PR ([EE
#9268](appsmithorg/appsmith-ee#9268) / [CE
#41961](#41961)), reproduced
consistently across 3 retries in that run.

Fix: add the same `WaitUntilAllToastsDisappear()` call used elsewhere in
this spec before the second identical-message check.

## Root cause detail
From the failing run's logs: the backend correctly returned the
`TEST_DATASOURCE_ERROR` action with the replica-set-port error message
both times (confirmed via the intercepted `@testDatasource` XHR), so
this is a test-timing issue, not a backend regression.

## Test plan
- [ ] `ConnectionErrors_Spec.ts` passes reliably in CI (no test-plugin
infra changes required, so no server-side test coverage needed)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Tests**
  * Improved regression coverage for MongoDB connection error handling.
* Added a wait for error notifications to clear before continuing
through the rest of the validation flow, making the test more reliable.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
CE PR for the EE pr appsmithorg/appsmith-ee#9294

- This Pr is about removal of removal of commonGitService interface and
its implementation
- It also deletes some of existing test cases which has been
successfully migrated/duplicated with the new service.
- it contains some test cases which needs to be migrated to the newer
git service, hence those are disabled for now.

Fixes
#https://linear.app/appsmith/issue/V2-5516/removal-of-service-layer


## Automation

/ok-to-test tags="@tag.Git"

### 🔍 Cypress test results


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29307122107>
> Commit: f9755e5
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29307122107&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Tue, 14 Jul 2026 05:12:24 UTC
<!-- end of auto-generated comment: Cypress test results  -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Refactor**
  * Centralized Git profile handling via the Git profile utility.
* Removed deprecated Git service interfaces/implementations and related
compatibility layers.
* **Tests**
  * Removed the Git branches end-to-end integration test suite.
* Added a larger Git service end-to-end test class, currently disabled.
  * Updated user data tests to use the consolidated Git profile utility.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- Replaces the pod-based and individual-based CODEOWNERS rules with a
single blanket rule owned by the new `@appsmithorg/core-owners` team.
- `core-owners` team members: `subrata71`, `sondermanish`,
`wyattwalter`, `tomjose92`, `sebastianiv21`, `amelia-c0n`.
- Team has been granted `push` (write) access to this repo, which GitHub
requires for a team to be a valid CODEOWNERS entry.

## Changes
- `CODEOWNERS`: replaced all pod (`@appsmithorg/widgets-blocks`,
`ai-agents-fe`, `ai-agents-be`, `wds-team`, `v1-be`, `v1-fe`,
`git-be-reviewers`, `git-fe-reviewers`, `v1-devops`) and individual
(`@riodeuno`, `@nilanshbansal`, `@sharat87`, `@abhvsn`) ownership rules
with a single `* @appsmithorg/core-owners` rule.

## Test Plan
- [ ] GitHub UI shows no "invalid codeowners" warning on this PR
- [ ] Confirm `core-owners` team is requested as a reviewer once merged
and branch protection is updated to require code owner review

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Simplified repository ownership configuration by consolidating path
ownership under a single core ownership rule.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description

**TL;DR:** `<a href="mailto:...">` (and `tel:`, `ftp:`, `sms:`, `file:`
links) in the Text widget rendered as broken `http://mailto:...` hrefs.
The link-sanitizing helper now recognizes these safe schemes and leaves
them untouched.

The Text widget runs every href in its HTML through a sanitizing
`LinkFilter` (`app/client/src/widgets/TextWidget/component/index.tsx`),
which calls `addHttpIfMissing`. That helper had exactly one rule: if the
value doesn't start with the literal string `"http"`, prepend `http://`.
It was written so scheme-less links like `www.appsmith.com` don't get
treated as relative URLs, but it had no concept of other protocols — so
`mailto:tom@appsmith.com` failed the prefix check and came out as
`http://mailto:tom@appsmith.com`. The same mangling hit `tel:`, `ftp:`,
etc. The Interweave library the widget uses for rendering explicitly
allows `mailto:` links, so this was purely the helper breaking them. The
Table widget's HTML cell (TableWidgetV2) reuses the same filter and had
the same bug.

**The fix:** `addHttpIfMissing`
(`app/client/src/widgets/TextWidget/component/helpers.tsx`) now
recognizes an explicit scheme via a case-insensitive allowlist — `http`,
`https`, `mailto`, `tel`, `ftp`, `file`, `sms`, mirroring the set
already used in `utils/validation/getIsSafeURL.ts` — and leaves those
values untouched. Scheme-less values still get `http://` prepended as
before, and unsafe schemes like `javascript:` are still neutralized the
same way they were (Interweave also refuses to render such anchors, so
no XSS regression).

Added `helpers.test.ts` covering safe schemes (including uppercase),
scheme-less URLs, `javascript:` neutralization, and empty values.

Fixes: no linked issue — fixes broken `mailto:` links reported in the
Text widget.

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29401331502>
> Commit: 3b6b3e5
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29401331502&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 15 Jul 2026 09:47:27 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01PADWnYmHqjAM7nAfXzdPCQ

---
_Generated by [Claude
Code](https://claude.ai/code/session_01PADWnYmHqjAM7nAfXzdPCQ)_

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Improved link handling by preserving explicitly supported URL schemes
(including HTTP/HTTPS, email, telephone, SMS, and FTP) unchanged.
* For unsupported or unsafe schemes, inputs are automatically normalized
by prepending `http://` to prevent unexpected behavior.
  * Links without a scheme now reliably receive an `http://` prefix.
  * Empty inputs and already-safe links remain unchanged.
* **Tests**
* Added Jest coverage to verify the updated scheme-preserving and
unsafe-scheme neutralization behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude <noreply@anthropic.com>
…41995)

## Summary

Fixes an open redirect vulnerability (APP-15347) where an attacker could
forge the `Origin` HTTP header on `POST /api/v1/login` to redirect
authenticated users to an external domain.

**Root cause:** `isSafeRedirectUrl()` used the client-supplied `Origin`
header as both the redirect URL builder and the trust anchor. A forged
`Origin: https://evil.com` passed validation because the redirect host
trivially matched the Origin host (`evil.com == evil.com`).

**Fix:** Introduces `getTrustedOrigin()` which cross-checks the `Origin`
header against the request's `Host` / `X-Forwarded-Host` (set by the
reverse proxy, not the client). All four call sites that previously read
Origin directly now use this helper:

- `isSafeRedirectUrl()` — no longer uses forged Origin as the validation
baseline
- `fulfillRedirectUrl()` — no longer prepends forged Origin to relative
redirect paths
- `sanitizeRedirectUrl()` — no longer uses forged Origin in the fallback
URL
- `getRedirectUrl()` (fork-app path) — no longer uses forged Origin for
URL construction

When no `Host` / `X-Forwarded-Host` is available (unusual environments
without proxy headers), Origin is still trusted to preserve backward
compatibility.

## Test plan

- [x] Added unit test `testForgedOriginHeaderIsBlockedWhenHostDiffers` —
confirms forged Origin is rejected and sanitized URL does not contain
the attacker domain
- [x] All 69 existing `RedirectHelperOpenRedirectTest` tests pass (0
failures, 0 errors)

## Linear ticket


https://linear.app/appsmith/issue/APP-15347/security-low-open-redirect-via-improper-validation-of-origin-header-on

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Summary by CodeRabbit

* **Bug Fixes**
* Strengthened open-redirect protection by only trusting the `Origin`
header when it matches the inbound request host (including effective
port), derived from `X-Forwarded-Host`/`Host` (and forwarded port when
present).
* Updated redirect validation and fallback URL generation to prevent
forged origin values from being used or leaked.

* **Tests**
* Added open-redirect regression coverage for forged `Origin` handling,
proxy-style `X-Forwarded-Host` behavior, and IPv4/IPv6 same-host
different-port edge cases.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


## Automation
/ok-to-test tags="@tag.All"

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29393469419>
> Commit: fea4a4a
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29393469419&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 15 Jul 2026 07:24:36 UTC
<!-- end of auto-generated comment: Cypress test results  -->
Users building apps in non-English languages (e.g. German) experience
corrupted UI text because browsers and translation extensions see <html
lang="en"> and auto-translate page content — sometimes German-to-German,
sometimes misinterpreting English UI words like "Content" as the French
adjective (translated to "Thrilled").
This PR fixes the problem at three layers:
Immediate defence: Adds translate="no" and <meta name="google"
content="notranslate"> to the app shell HTML, editor UI containers
(PropertyPane tabs, App Settings), and widget iframe templates. This
stops browsers from offering or performing auto-translation.
Per-app language setting: Adds an "HTML Language" field to App Settings
> General. App builders can enter a BCP 47 language code (e.g. de, fr,
ja) that gets persisted as htmlLang on ApplicationDetail and applied to
the published app's <html lang=""> attribute at runtime via
react-helmet.
Instance-level default: Adds APPSMITH_DEFAULT_HTML_LANG environment
variable for self-hosted admins who want all apps on their instance to
default to a specific language. Falls back gracefully to "en" when the
variable is not set.



## Description
> [!TIP]  
> _Add a TL;DR when the description is longer than 500 words or
extremely technical (helps the content, marketing, and DevRel team)._
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._


Fixes #`6642`  

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29444417195>
> Commit: 2e8764c
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29444417195&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 15 Jul 2026 20:40:33 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added an **“HTML language”** setting to General Settings (BCP 47),
with validation, persistence, and an environment-configurable default.

* **Behavior**
* Published apps now apply the chosen (or default) HTML `lang` to the
document metadata.
* App pages, loading screens, and embedded/iframe content now opt out of
automatic translation via `translate="no"` and Google `notranslate`
where applicable.

* **Tests**
* Added unit tests covering HTML language input validation and
normalization.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: subratadeypappu <subrata@appsmith.com>
Co-authored-by: Luis Ibarra <98054342+sebastianiv21@users.noreply.github.com>
Co-authored-by: Luis Ibarra <luissebastianibarrav@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…us users [APP-15344] (#42001)

## Summary

Fixes [APP-15344](https://linear.app/appsmith/issue/APP-15344): the
unauthenticated `/api/v1/tenants/current` endpoint was returning
internal configuration fields (Google Maps API key, license details,
migration status, feature flags) to anonymous callers.

This is the **CE portion** of the fix. The EE superset PR is
[appsmith-ee#9305](appsmithorg/appsmith-ee#9305)
(all server tests passing).

**Approach:** Service-layer filtering strips post-login-only fields when
the current user is anonymous, following the same pattern as APP-14994
(PR #41598). Only fields required by the login/signup page are preserved
(branding, auth method flags, instance name, third-party auth list).
Authenticated users receive the full unmodified response.

**CE fields stripped for anonymous users:**
- `googleMapsKey` (plaintext API key)
- Full `license` envelope (replaced with minimal `{plan: FREE}`)
- `isSignupDisabled`, `emailVerificationEnabled`,
`isStrongPasswordPolicyEnabled`
- `isAtomicPushAllowed`, `featuresWithPendingMigration`,
`migrationStatus`
- `pricingPlan` (Organization-level)

**Changes:**
1. `OrganizationConfigurationCE.stripFieldsForAnonymousUser()` — strips
CE config fields
2. `OrganizationServiceCEImpl.suppressFieldsForAnonymousUser()` — checks
security context, calls strip if anonymous
3. `OrganizationServiceCEImpl.stripOrganizationFieldsForAnonymousUser()`
— strips Organization-level fields (overridable by EE)

## Test Plan

- [x] `getOrganizationConfig_AnonymousUser_StripsInternalConfiguration`
— verifies sensitive fields are null
- [x] `getOrganizationConfig_AnonymousUser_PreservesLoginPageFields` —
verifies login-page fields remain
- [x] `getOrganizationConfig_AuthenticatedUser_ExposesFullConfiguration`
— no regression for authenticated users
- [ ] Existing APP-14994 tests pass (instanceId/adminEmailDomainHash
stripping)

/ok-to-test tags="@tag.All"


<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29452470909>
> Commit: 151a92e
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29452470909&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 15 Jul 2026 22:42:14 UTC
<!-- end of auto-generated comment: Cypress test results  -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Security**
* Anonymous users now receive only minimal organization configuration
and license details.
* Sensitive settings, pricing information, and privilege-related fields
are hidden from unauthenticated access.
* **Bug Fixes**
* Authenticated users continue to receive complete organization
configuration details, including updated settings.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…#42002)

Bumps [websocket-driver](https://github.com/faye/websocket-driver-node)
from 0.7.4 to 0.7.5.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/faye/websocket-driver-node/blob/main/CHANGELOG.md">websocket-driver's
changelog</a>.</em></p>
<blockquote>
<h3>0.7.5 / 2026-06-04</h3>
<ul>
<li>Close a draft-75/76 connection if a length header grows to exceed
the
configured max length</li>
<li>Fail the connection if a message is larger than the configured max
length
after extension processing</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/faye/websocket-driver-node/commit/5d6a9aaf5f019007d917bd9ddc7eeb775c86cc1f"><code>5d6a9aa</code></a>
Bump version to 0.7.5</li>
<li><a
href="https://github.com/faye/websocket-driver-node/commit/c55679a5b18251dd0a55d18a0cc6a4fd8822b92f"><code>c55679a</code></a>
Fail the connection if a message is larger than the configured max
length aft...</li>
<li><a
href="https://github.com/faye/websocket-driver-node/commit/5b197ca874dab58e96cacad8a3c256797d804680"><code>5b197ca</code></a>
Close a draft-75/76 connection if a length header grows to exceed the
configu...</li>
<li><a
href="https://github.com/faye/websocket-driver-node/commit/fc93a48f879d0fd4a77c687a4a19c4328613df65"><code>fc93a48</code></a>
Test on Node v22, v24, and v26</li>
<li><a
href="https://github.com/faye/websocket-driver-node/commit/2e82d3464d294bdd11202657208636e667212335"><code>2e82d34</code></a>
Test on recent versions of Node</li>
<li><a
href="https://github.com/faye/websocket-driver-node/commit/e4962db9940ad1a8cf6fe8328d3b81c3f8c37479"><code>e4962db</code></a>
Switch from Travis CI to GitHub Actions</li>
<li><a
href="https://github.com/faye/websocket-driver-node/commit/3f2f9b70a8ae999b4657d26316a5d45b7caea679"><code>3f2f9b7</code></a>
Travis update: cache npm modules, remove sudo, run on Node 15</li>
<li>See full diff in <a
href="https://github.com/faye/websocket-driver-node/compare/0.7.4...0.7.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=websocket-driver&package-manager=npm_and_yarn&previous-version=0.7.4&new-version=0.7.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/appsmithorg/appsmith/network/alerts).

</details>

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29494564049>
> Commit: fc27630
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29494564049&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Thu, 16 Jul 2026 12:33:00 UTC
<!-- end of auto-generated comment: Cypress test results  -->



## Automation
/ok-to-test tags="@tag.All"

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…rk address (#41985)

## What

Adds a defense-in-depth SSRF protection so a user-defined datasource
cannot connect
to the Appsmith instance's own network address.

## Why

The SSRF host filter (`RestrictedHostFilter`) intentionally allows
private-network
(RFC 1918 / site-local) addresses so that legitimate customer
datasources on private
networks keep working. In a typical Docker/Kubernetes deployment the
instance's own
routable address is itself a private/site-local address, so it falls
inside that
allowed range. As a hardening measure, this change blocks that one
target — the
instance's own address — without restricting the rest of the private
network.

## How

- Registers the instance's own hostname(s) at startup (from the local
hostname and the
`HOSTNAME` environment variable) and resolves them to their current
address(es),
mirroring the existing internal-Redis host registration. Resolution is
live per check,
so an instance whose address changes stays covered with no
cached-address bookkeeping.
- Blocks a datasource whose target is a registered own hostname, or
resolves to one of
the instance's own addresses. Enforced consistently across the
datasource egress paths
— WebClient (REST/GraphQL/SaaS), Elasticsearch, Redis, and datasource
validation —
evaluating the address already resolved by each path, so no additional
lookup of the
  user-supplied host is introduced.
- Only the instance's own address(es) are affected; other
private-network datasources
  continue to work unchanged.
- Coverage is best-effort for the address(es) the registered hostname(s)
resolve to
(the primary, hostname-mapped address), not a full network-interface
enumeration.

## Testing

- Unit tests cover rejection of the own address through each enforcement
entry point
(raw IPv4 literal, IPv4-mapped IPv6, and hostname), confirm other
private-network
addresses stay allowed, and confirm the existing SSRF kill-switch still
applies.
Own-address resolution is injected in tests, so the suite has no
external DNS
  dependency.
- `appsmith-interfaces` module tests pass.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Security Enhancements**
* Strengthened SSRF protection by blocking outbound requests that target
the application’s own hostname or any resolved IP addresses associated
with it.
* Expanded detection to cover multiple address representations
(including IPv4 literals and IPv4-mapped IPv6).
* Added startup registration of the instance’s own hostname(s) and
environment hostname with graceful fallback if resolution fails.
* Preserved the existing allow/deny behavior for other private network
targets and the SSRF bypass setting.
* **Tests**
* Added deterministic test coverage for own-host blocking, caching
behavior, and SSRF bypass across all relevant enforcement paths.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

<!-- This is an auto-generated comment: Cypress test results  -->
> [!WARNING]
> Tests have not run on the HEAD
1d3d64d yet
> <hr>Mon, 13 Jul 2026 19:13:41 UTC
<!-- end of auto-generated comment: Cypress test results  -->

---------

Co-authored-by: Claude <noreply@anthropic.com>
…nd remove unused routes (#41996)

## What
Makes two unauthenticated email endpoints return a consistent response
regardless of
whether an account exists, and removes two unused public routes.

## Why
`POST /users/forgotPassword` and `POST /users/resendEmailVerification`
returned
different responses for a known vs unknown email (and, for resend, also
revealed
verified state). This let an unauthenticated caller determine which
email addresses
have accounts.

## Changes
- **forgotPassword** — unknown email and over-limit both return the same
generic
success (HTTP 200), sending no email. The per-account reset limit is
unchanged.
- **resendEmailVerification** — unknown, already-verified, and
verification-disabled
cases all return the same generic success, sending no email. Adds a
per-email send
limit: over the limit it still returns the generic success (so it can't
be used to
probe), and it fails open if the limiter is unavailable so legitimate
verification
  emails are never blocked.
- Removes two `permitAll` routes (`GET /users/invite/verify`, `PUT
/users/invite/confirm`)
  that have no server handler.

## Testing
- Controller + service tests assert identical status and body across
known-under-limit / known-over-limit / known-verified / unknown /
verification-disabled
for both endpoints, plus the silent per-email limit and its fail-open
path.
- Relevant server module tests pass.


Fixes
https://linear.app/appsmith/issue/APP-15349/security-medium-user-enumeration-via-forgot-password

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29493040653>
> Commit: 6017e79
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29493040653&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Thu, 16 Jul 2026 19:50:33 UTC
<!-- end of auto-generated comment: Cypress test results  -->



## Automation
/ok-to-test tags="@tag.All"

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bumps [echarts](https://github.com/apache/echarts) from 5.4.2 to 6.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/apache/echarts/releases">echarts's
releases</a>.</em></p>
<blockquote>
<h2>6.1.0</h2>
<ul>
<li>[Feature] [axis] Support <code>dataMin</code> and
<code>dataMax</code> option for calculating a nice axis extent. <a
href="https://redirect.github.com/apache/echarts/pull/20838">#20838</a>
(<a href="https://github.com/Justin-ZS">Justin-ZS</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Feature] [axis] Comprehensively enable all types of axis (i.e.,
<code>&quot;value&quot;</code>/<code>&quot;time&quot;</code>/<code>&quot;category&quot;</code>/<code>&quot;log&quot;</code>)
to render series (typically
<code>&quot;bar&quot;</code>/<code>&quot;pictorialBar&quot;</code>/<code>&quot;candlestick&quot;</code>/<code>&quot;boxplot&quot;</code>)
without overflow (including the case <code>&quot;category&quot;</code>
axis with <code>boundaryGap: false</code>); provide
<code>containShape</code> option; provide some corresponding
<code>clip</code> option. <a
href="https://github.com/apache/echarts/commit/dbfaf6a73">dbfaf6a73</a>
<a
href="https://github.com/apache/echarts/commit/fe932a2aa">fe932a2aa</a>
<a
href="https://github.com/apache/echarts/commit/3973b21ee">3973b21ee</a>
(<a href="https://github.com/100pah">100pah</a>) <a
href="https://redirect.github.com/apache/echarts/pull/21511">#21511</a>
(<a href="https://github.com/akashsonune">Akash Sonune</a>)</li>
<li>[Feature] [axis] Automatically exclude non-positive series data
values on <code>&quot;log&quot;</code> axis. <a
href="https://github.com/apache/echarts/commit/dedc5dc18">dedc5dc18</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Feature] [axis] Enable <code>axisLabel.formatter</code> to receive
its index for working with <code>customValues</code>. <a
href="https://redirect.github.com/apache/echarts/pull/21220">#21220</a>
<a
href="https://redirect.github.com/apache/echarts/pull/21432">#21432</a>
(<a href="https://github.com/szymonpachucki">Szymon Pachucki</a>, <a
href="https://github.com/Ovilia">Ovilia</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Feature] [line] Add <code>triggerEvent</code> option for more
control over mouse event. <a
href="https://redirect.github.com/apache/echarts/pull/21001">#21001</a>
(<a href="https://github.com/sjcobb">Steven Cobb</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Feature] [pie] Add <code>tangential-noflip</code> rotation mode to
keep labels tangential without flipping. <a
href="https://redirect.github.com/apache/echarts/pull/21258">#21258</a>
(<a href="https://github.com/MC-YCY">春秋半夏</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Feature] [gauge] <code>progress.color</code> supports
<code>'auto'</code>. <a
href="https://redirect.github.com/apache/echarts/pull/21224">#21224</a>
(<a href="https://github.com/StNimmerlein">StNimmerlein</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Feature] [radar] Add <code>clockwise</code> option. <a
href="https://redirect.github.com/apache/echarts/pull/21143">#21143</a>
(<a href="https://github.com/daidr">Dai Xuezhou</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Feature] [candlestick] [dataZoom] Add <code>cursor</code> option
for <code>candlestick</code> series and add <code>cursorGrab</code>
option &amp; <code>cursorGrabbing</code> for <code>'inside'</code>
dataZoom. <a
href="https://redirect.github.com/apache/echarts/pull/21558">#21558</a>
(<a href="https://github.com/diysimon">zuming</a>, <a
href="https://github.com/Ovilia">Ovilia</a>, <a
href="https://github.com/100pah">100pah</a>)</li>
<li>[Feature] [scatter] [effectScatter] [geo] Enable <code>clip</code>
option on
<code>&quot;scatter&quot;</code>/<code>&quot;effectScatter&quot;</code>
on <code>geo</code>. <a
href="https://github.com/apache/echarts/commit/417592289">417592289</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Feature] [visualMap] Add <code>seriesTargets</code> option for
multiple series-dimension mappings. <a
href="https://redirect.github.com/apache/echarts/pull/20703">#20703</a>
(<a href="https://github.com/Justin-ZS">Justin-ZS</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Feature] [matrix] Support <code>matrix.x/y.length</code> for
conveniently creating a headless matrix without composing an array. <a
href="https://redirect.github.com/apache/echarts/pull/21191">#21191</a>
(<a href="https://github.com/100pah">100pah</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Feature] [matrix] Add <code>triggerEvent</code> option to support
triggering event on matrix cells. <a
href="https://redirect.github.com/apache/echarts/pull/21390">#21390</a>
(<a href="https://github.com/natsuokawai">Natsuo Kawai</a>, <a
href="https://github.com/100pah">100pah</a>)</li>
<li>[Feature] [i18n] add Latvian(LV) translation. <a
href="https://redirect.github.com/apache/echarts/pull/21546">#21546</a>
(<a href="https://github.com/EPoikans">EPoikans</a>)</li>
<li>[Fix] [axis] Change and clarify the rounding error and
auto-precision utils and solutions. <a
href="https://github.com/apache/echarts/commit/479dcd454">479dcd454</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [axis] Fix chart does not work when using
<code>customValues</code> with <code>formatter</code> in time axis
(<code>axis.type: 'time'</code>) label. <a
href="https://redirect.github.com/apache/echarts/pull/21352">#21352</a>
(<a href="https://github.com/Srajan-Sanjay-Saxena">Srajan Sanjay
Saxena</a>, <a href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [axis] Fix and clarify <code>alignTick</code> strategy, and
fix <code>LogScale</code> precision. <a
href="https://github.com/apache/echarts/commit/a6ab2458f">a6ab2458f</a>
<a
href="https://github.com/apache/echarts/commit/ffcc636fb">ffcc636fb</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [axis] Fix duplicate ticks when using time axis
(<code>axis.type: 'time'</code>) or <code>customValues</code>, which
causes jitter of <code>splitArea</code>; fix the
<code>showMin/MaxLabel</code> handling of a category axis
(<code>axis.type: 'category'</code>); enable a uniform
<code>bandWidth</code> calculation in numeric axis (<code>axis.type:
'value' | 'time' | 'log'</code>). <a
href="https://github.com/apache/echarts/commit/8de2b64fa">8de2b64fa</a>
<a
href="https://github.com/apache/echarts/commit/15af0db02">15af0db02</a>
<a
href="https://github.com/apache/echarts/commit/8ddaa5c69">8ddaa5c69</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [axis] Fix time axis (<code>axis.type: 'time'</code>) bug when
value scale is in millisecond. <a
href="https://github.com/apache/echarts/commit/40b77b464">40b77b464</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [bar] Fix wrong label position when bar series has a 0
width/height. <a
href="https://redirect.github.com/apache/echarts/pull/21218">#21218</a>
(<a href="https://github.com/Justin-ZS">Justin-ZS</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Fix] [scatter] Fix jitter layout does not support progressive
rendering and cause chart to be frozen and potential NPE. <a
href="https://redirect.github.com/apache/echarts/pull/21436">#21436</a>
(<a href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [lines] Fix effect symbol flip on unidirectional loop end when
<code>roundTrip</code> is not enabled. <a
href="https://redirect.github.com/apache/echarts/pull/21320">#21320</a>
(<a href="https://github.com/mynk2611">Mayank Mehta</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [candlestick] Fix candlestick render error with
<code>series.encode</code> on horizontal layout. <a
href="https://redirect.github.com/apache/echarts/pull/21325">#21325</a>
(<a href="https://github.com/PPRAMANIK62">Purbayan Pramanik</a>, <a
href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [parallel] Fix incorrect axis extent when any subsequent
series has a larger value than the first. <a
href="https://redirect.github.com/apache/echarts/pull/21387">#21387</a>
(<a href="https://github.com/jackhickson">jackhickson</a>, <a
href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [pie] Support axes extent union pie center automatically when
pie is laid out on Cartesian (<code>grid</code> component). <a
href="https://github.com/apache/echarts/commit/18a23a875">18a23a875</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [treemap] Fix treemap can not be zoomed out after a zoom-in
when <code>scaleLimit</code> is specified <a
href="https://redirect.github.com/apache/echarts/pull/21427">#21427</a>
(<a href="https://github.com/liuyizhou">TateLiu</a>, <a
href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [lines] Fix potential <code>tooltip</code> XSS vulnerability
in lines series (<code>series.type: 'lines'</code>). <a
href="https://redirect.github.com/apache/echarts/pull/21608">#21608</a>
(<a href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [map] [geo] Fix the failed synchronization and visual
artifacts on geo roaming and animation. <a
href="https://github.com/apache/echarts/commit/417592289">417592289</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [tooltip] Fix <code>tooltip</code> content does not refresh
when changing tooltip trigger from <code>'axis'</code> to
<code>'item'</code>. <a
href="https://redirect.github.com/apache/echarts/pull/20710">#20710</a>
(<a href="https://github.com/Justin-ZS">Justin-ZS</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [tooltip] <code>valueFormatter</code> callback param
<code>dataIndex</code> should be <code>rawDataIndex</code> rather than
<code>dataZoom</code> filtered <code>dataIndex</code>. <a
href="https://redirect.github.com/apache/echarts/pull/21479">#21479</a>
(<a href="https://github.com/100pah">100pah</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [axisPointer] Fix <code>axisPointer</code> shadow and enable
clipping - it is previously only applicable to
<code>&quot;category&quot;</code> axis, but is buggy in numeric axis
with <code>&quot;bar&quot;</code> series. <a
href="https://github.com/apache/echarts/commit/8de2b64fa">8de2b64fa</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [axisPointer] Fix visual artifacts caused by failed
<code>axisPointer</code> restoration. <a
href="https://github.com/apache/echarts/commit/56a32c0bb">56a32c0bb</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [hoverLayer] Fix visual artifacts arisen on hover layer. <a
href="https://redirect.github.com/ecomfe/zrender/pull/1151">zrender#1151</a>
<a
href="https://github.com/apache/echarts/commit/933585126">933585126</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [marker] Fix <code>marker</code> fails to render with
<code>dataset</code> and <code>encode</code>. <a
href="https://redirect.github.com/apache/echarts/pull/21439">#21439</a>
(<a href="https://github.com/plainheart">plainheart</a>, <a
href="https://github.com/100pah">100pah</a>).</li>
<li>[Fix] [dataZoom] Fix wrong position of the <code>dataZoom</code>
when the <code>series</code> has only one data point. <a
href="https://redirect.github.com/apache/echarts/pull/21196">#21196</a>
(<a href="https://github.com/alesmit">alesmit</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Fix] [dataZoom] Fix <code>dataZoom</code> bug that data info
disappears when dragging released; fix <code>dataZoom</code> dragging
cursor style. <a
href="https://github.com/apache/echarts/commit/64305a4b8">64305a4b8</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [dataZoom] Apply a better auto-precision method; fix
unexpected behaviors when <code>dataZoom</code> controls axes with
<code>alignTicks: true</code>. <a
href="https://github.com/apache/echarts/commit/d168bf237">d168bf237</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [dataZoom] Fix <code>AxisProxy</code> can not be cleared when
<code>dataZoom</code> option changed; fix related <code>onZero</code>
behaviors. <a
href="https://github.com/apache/echarts/commit/52ceb924a">52ceb924a</a>
<a
href="https://github.com/apache/echarts/commit/2e82d33c3">2e82d33c3</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [areaStyle] Fix <code>areaStyle</code> render error when
dimension name is empty string. <a
href="https://redirect.github.com/apache/echarts/pull/21219">#21219</a>
(<a href="https://github.com/Justin-ZS">Justin-ZS</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Fix] [sunburst] Fix root node label may not be centered. <a
href="https://redirect.github.com/apache/echarts/pull/21306">#21306</a>
(<a href="https://github.com/akashsonune">Akash Sonune</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Fix] [matrix] Fix matrix label formatter does not work. <a
href="https://redirect.github.com/apache/echarts/pull/21410">#21410</a>
(<a href="https://github.com/Justin-ZS">Justin-ZS</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Fix] [toolbox] Fix <code>emphasis</code> color is the same as the
default color. <a
href="https://redirect.github.com/apache/echarts/pull/21384">#21384</a>
(<a href="https://github.com/Ovilia">Ovilia</a>) <a
href="https://github.com/apache/echarts/commit/b094f987d">b094f987d</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [toolbox] Fix the <code>dataView</code> component does not fit
the dark mode. <a
href="https://redirect.github.com/apache/echarts/pull/21176">#21176</a>
(<a href="https://github.com/notthistrain">notthistrain</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
<li>[Fix] [progressive] Fix progressive rendering issues. <a
href="https://github.com/apache/echarts/commit/91a60fc76">91a60fc76</a>
(<a href="https://github.com/100pah">100pah</a>)</li>
<li>[Fix] [labelLine] Fix <code>labelLine.smooth</code> can not be
reset. <a
href="https://redirect.github.com/apache/echarts/pull/21425">#21425</a>
(<a href="https://github.com/fanwww">fanwww</a>, <a
href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [graphic] Fix stroke corner gap due to not closing path in
<code>roundRect</code> helper. <a
href="https://redirect.github.com/ecomfe/zrender/pull/1155">zrender#1155</a>
(<a href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [svg] Enhance SVG <code>encodeBase64</code> compatibility to
make it available in more environments like Web Worker/NodeJS/Bun. <a
href="https://redirect.github.com/ecomfe/zrender/pull/1145">zrender#1145</a>
(<a href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [core] Mark <code>echarts</code> instance object as
<code>raw</code> in <code>Vue</code>. <a
href="https://redirect.github.com/apache/echarts/pull/21293">#21293</a>
(<a href="https://github.com/plainheart">plainheart</a>)</li>
<li>[Fix] [chord] Add the missing export entry for chord chart. <a
href="https://redirect.github.com/apache/echarts/pull/21197">#21197</a>
(<a href="https://github.com/plainheart">plainheart</a>, <a
href="https://github.com/Ovilia">Ovilia</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/apache/echarts/commit/c5a48f5f97d23e5379720870b8444cd05b50ffb4"><code>c5a48f5</code></a>
Merge pull request <a
href="https://redirect.github.com/apache/echarts/issues/21612">#21612</a>
from apache/release-dev</li>
<li><a
href="https://github.com/apache/echarts/commit/77e5222d15690b539505eb7690b8ff53b52aab9c"><code>77e5222</code></a>
release 6.1.0-rc.2</li>
<li><a
href="https://github.com/apache/echarts/commit/21f17bec20d42623edcd66f91cf2344d2bced6b1"><code>21f17be</code></a>
fixRegression(map,geo): Resolve circular dependencies introduced by this
vers...</li>
<li><a
href="https://github.com/apache/echarts/commit/830e8b6ec780ff24d59577c69e3bbf69f1df315e"><code>830e8b6</code></a>
chore: Supplement package.json (for module cjs declaration) to source
release.</li>
<li><a
href="https://github.com/apache/echarts/commit/ed0e2103071744cb97887757679336cec1d8dac4"><code>ed0e210</code></a>
chore: Fix <code>addHeader</code> tool and add missing license
headers.</li>
<li><a
href="https://github.com/apache/echarts/commit/cc78ada709b6028371b24f5449ad7a4dda93f992"><code>cc78ada</code></a>
Merge pull request <a
href="https://redirect.github.com/apache/echarts/issues/21611">#21611</a>
from apache/release-dev</li>
<li><a
href="https://github.com/apache/echarts/commit/3f6e0125fdd8a485c59652cdf628144fcea1702f"><code>3f6e012</code></a>
release: Build release.</li>
<li><a
href="https://github.com/apache/echarts/commit/d69405f83fe2be367beb0ff1e08b49380d6485c6"><code>d69405f</code></a>
chore: Add missing headers.</li>
<li><a
href="https://github.com/apache/echarts/commit/6998ed02fcfe39aafcefc47f4fb4822b36b0642d"><code>6998ed0</code></a>
release: Upgrade npm version.</li>
<li><a
href="https://github.com/apache/echarts/commit/8cb374b15ca842e057812715caf73acf17649a5b"><code>8cb374b</code></a>
fix(build): Fix build commands.</li>
<li>Additional commits viewable in <a
href="https://github.com/apache/echarts/compare/5.4.2...6.1.0">compare
view</a></li>
</ul>
</details>
<details>
<summary>Install script changes</summary>
<p>This version adds <code>prepare</code> script that runs during
installation. Review the package contents before updating.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=echarts&package-manager=npm_and_yarn&previous-version=5.4.2&new-version=6.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/appsmithorg/appsmith/network/alerts).

</details>

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29167090074>
> Commit: 81949ce
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29167090074&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Sat, 11 Jul 2026 21:51:35 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Automation
/ok-to-test tags="@tag.All"

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ility in copy modal (#42007)

## Description

This PR fixes two issues in the CopyEntityToAppModal component:

1. **Dropdown positioning**: Dropdowns in the modal were being portaled
outside the modal container, causing them to be blocked by the Radix
Dialog&#39;s scroll event blocking. Added `getPopupContainer`
configuration to all Select components to render dropdowns inside the
modal instead.

2. **Conditional datasource note**: The datasource credentials note was
being shown for all entity types, but it only applies to queries. Added
a conditional check to hide the note when copying JS objects, which
don&#39;t have datasources.

### Changes Made

**CopyEntityToAppModal.tsx:**
- Added `getPopupContainerInModal` helper function to keep dropdown
content within the modal
- Applied `getPopupContainer={getPopupContainerInModal}` to workspace,
application, and page Select components
- Wrapped the datasource note in a conditional that only renders for
non-JS_OBJECT entity types

**CopyEntityToAppModal.test.tsx:**
- Refactored mock setup to use a mutable `mockEntityType` variable for
test flexibility
- Updated `beforeEach` to reset `mockEntityType` to &#34;ACTION&#34;
- Added test case verifying the datasource note appears when copying a
query
- Added test case verifying the note is hidden when copying a JS object

## Test Plan

The changes are covered by new unit tests that verify:
- The datasource note displays for query entities
- The datasource note is hidden for JS object entities

Existing tests continue to pass, confirming no regression in other
functionality.

## Automation

/ok-to-test tags="@tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29553745147>
> Commit: 863dc46
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29553745147&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Fri, 17 Jul 2026 04:38:25 UTC
<!-- end of auto-generated comment: Cypress test results  -->

## Communication
- [ ] Yes
- [x] No

https://claude.ai/code/session_01LCyDSjroZwWqhkBdfd19Sq



## Summary by CodeRabbit

* **Bug Fixes**
* Improved dropdown behavior in the copy dialog so menus remain
contained within the modal.
* Updated the informational datasource note to appear only for
applicable entity types.
* Added coverage for entity-specific messaging and existing target
selection behavior.

---------

Co-authored-by: Claude <noreply@anthropic.com>
## Description
CE counterpart
Remove the legacy `GitExecutor` abstraction and implementations,
migrating the remaining file utility and handler paths to their direct
replacements. Update affected server and git tests, including disabling
coverage that relies on the removed executor layer.

This is a refactor with no intended user-facing behavior change.

Fixes
https://linear.app/appsmith/issue/V2-5517/removal-of-jgitcontroller-layer-ie-git-executor-abstraction-and

## Automation
/ok-to-test tags="@tag.Git"

### 🔍 Cypress test results
<!-- leave this section untouched — CI auto-populates it -->

## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No

Made with [Cursor](https://cursor.com)

## Summary by CodeRabbit

* **Changes**
* Removed legacy Git “save/reconstruct” flows for application-level
references, consolidating Git behavior around artifact/resource-based
persistence.
* Updated repo saving to use the new artifact save path, with
feature-flagged handling of “keep working directory changes.”
* Continued symlink hardening after clone, now with more flexible
extensibility.

* **Testing**
* Removed or revised Git executor and file-format migration tests to
match the updated Git workflow and interfaces.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29568880309>
> Commit: 7010b86
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29568880309&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Fri, 17 Jul 2026 09:27:02 UTC
<!-- end of auto-generated comment: Cypress test results  -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Security**
* Improved repository checkout protection by removing malicious symbolic
links after cloning.

* **Improvements**
  * Streamlined Git-backed artifact saving and synchronization.
  * Updated file persistence to use the newer artifact exchange format.
  * Simplified application export and migration flows.

* **Compatibility**
  * Retained validation for supported repository file formats.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
….id, letting any user make another workspace's private datasource publicly (unauthenticated) executable (GHSA-fhgw-q2jf-8fq7) (#42018)

## Description

fix(security): Action create/update trusts client-supplied
datasource.id, letting any user make another workspace's private
datasource publicly (unauthenticated) executable (GHSA-fhgw-q2jf-8fq7)

<!-- Smithes will fill from commit messages -->

### Vulnerability

| Field | Value |
|-------|-------|
| **GHSA** |
[GHSA-fhgw-q2jf-8fq7](https://github.com/appsmithorg/appsmith/security/advisories/GHSA-fhgw-q2jf-8fq7)
|
| **CVE** | Not assigned |
| **CVSS** | 9.6 (critical) |
| **CWE** | CWE-862 |
| **Affected component** | Action create/update trusts client-supplied
datasource.id, letting any user make another workspace's private
datasource publicly (unauthenticated) executable |

### Exposure Analysis

<!-- Smithes will fill from triage report -->

### Fix

<!-- Smithes will fill from plan -->

### CE/EE sync

<!-- Smithes will fill from check_ce_ee output -->

### Disclosure

> **Do not merge until advisory is ready for disclosure coordination.**
>
> After merge:
> 1. Confirm fix is in release branch
> 2. Coordinate with security team on disclosure timeline
> 3. Update advisory with patched version and publish
> 4. Notify reporter

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!IMPORTANT]
> 🟣 🟣 🟣 Your tests are running.
> Tests running at:
<https://github.com/appsmithorg/appsmith/actions/runs/29803155676>
> Commit: 9c2b50c
> Workflow: `PR Automation test suite`
> Tags: `@tag.All`
> Spec: ``
> <hr>Tue, 21 Jul 2026 05:09:02 UTC
<!-- end of auto-generated comment: Cypress test results  -->

## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No

---------

Co-authored-by: Smithes Security Bot <smithes-bot@appsmith.com>
Co-authored-by: subrata71 <subrata@appsmith.com>
## Summary

`Email_settings_Spec` fails intermittently in CI (~25-35% of runs) when
it shares a duration-balanced shard with heavy specs. It's a
null-handling bug in the spec's email flow, exposed under maildev/SMTP
contention.

## Root cause

`waitForEmail` matches an email by subject + recipient, then hands it to
the test. Under contention maildev can surface an email's metadata
before its HTML part is parsed, so the matched email's `.html` is
`undefined`. Tests #3#6 then do:

```js
const emailHtml = email.html;          // undefined
const match = emailHtml.match(/.../);  // TypeError, thrown inside .then()
```

That throw is an unhandled promise rejection that aborts the test (the
wrapping `try/catch` is inert against async Cypress failures). Captured
CI stack: `Email_settings_Spec.ts` test #4 (`To verify invite workspace
email`); the same `email.html` → `.match` pattern is in tests #3, #5 and
#6.

## Fix

Fix it at the source rather than masking it. Add an opt-in `requireHtml`
flag to `waitForEmail`: when set, a matched email whose HTML body isn't
populated yet is treated as **not yet delivered**, so polling continues
until the body arrives (or the existing timeout). Tests #3#6 opt in;
their email-body assertions then run for real on a complete email.

(An earlier revision of this PR used `email.html || ""`, but that only
stopped the crash by silently skipping the invite-link verification when
the body was missing — masking the flake. Reverted in favor of the
helper-level fix.)

`waitForEmail` is identical in CE and EE, so this lands in CE and the
hourly sync carries it to EE. The new flag is optional and defaults to
current behavior, so other callers (including this spec's test #2, which
reads `email.text`) are unaffected.

## Validation

Attribution and the fix were verified on appsmith-ee via amplified
`/ci-test-limit` runs (multiple copies of the spec downstream of a heavy
git spec in one shard): the unfixed baseline reproduced the failure at
the exact line above.

Ref APP-15291

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/27509234477>
> Commit: 56deaca
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=27509234477&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Email`
> Spec:
> <hr>Sun, 14 Jun 2026 19:36:07 UTC
<!-- end of auto-generated comment: Cypress test results  -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Tests**
* Improved email-related test robustness: four end-to-end flows
(password reset, workspace invite, application invite — developer role,
and application invite — view role) now explicitly require the HTML
portion of delivered emails, reducing flakiness and better validating
email content.
* **Chores**
* Updated limited-test configuration to run the client-side email
regression spec during focused CI runs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


## Automation
/ok-to-test tags="@tag.Email"

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
## Description

`.github/workflows/README.md` described the `ok-to-test` workflow as
"Triggered by PR comments". That trigger was retired in March 2024
(`c5c3dc4caf`) — commenting `/ok-to-test` now only returns a bot reply
saying the method is defunct. Because these docs sit next to the
workflows, they read as authoritative and actively send people down a
dead path. That happened recently on an EE PR.

The rest of the file had drifted just as far:

- Documented 14 of 66 workflow files.
- 4 of its 14 links pointed at files that no longer exist:
`build-rts.yml`, `server.yml`, `external-client-test.yml`,
`remove-old-artifacts.yml`.
- Carried stale editorial asides ("**Comment:** Useless right now...").

### Why it rotted, and what changed

The file duplicated what the YAML already states — which workflows exist
and what jobs each contains — so it drifted on every rename. What the
YAML does *not* convey is which incantation triggers CI, and that has
changed once in two years.

So the catalog is gone and the triggers stay. The new README covers:

- How to run Cypress on a PR: tags in the PR body plus the `ok-to-test`
label.
- The still-live comment-dispatched slash commands
(`/build-deploy-preview`, `/test-pw`, `/ci-test-limit`).
- Two limitations stated outright: commenting `/ok-to-test` does
nothing, and fork PRs cannot run Cypress this way at all (GitHub gives
fork PRs a read-only token and no secrets).

Net 67 lines removed, 38 added.

### Notes for review

- `README.md` is byte-identical between CE and EE, so this is CE-only
and syncs across. I verified the merge into EE `release` applies
cleanly.
- `.github/workflows/docs/integration-tests-command.md` is also stale —
a full page describing jobs for a workflow whose only remaining job is
posting the deprecation notice. It is **not** touched here: it differs
by one line between CE and EE, and deleting it in CE produces a
modify/delete conflict that would block the sync pipeline. Folded into
the follow-up instead.
- The underlying problem — that fork PRs cannot run Cypress at all — is
out of scope and tracked separately.

Fixes https://linear.app/appsmith/issue/APP-15709

## Automation

/ok-to-test tags=""

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]  
> If you modify the content in this section, you are likely to disrupt
the CI result for your PR.

<!-- end of auto-generated comment: Cypress test results  -->

## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Updated CI workflow documentation with instructions for manually
triggering Cypress tests on pull requests.
* Added guidance on viewing results, re-running or canceling tests, and
limitations for pull requests from forks.
* Documented supported slash commands and linked to configuration
details.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…ross standard widgets (#41895)

## Description

**TL;DR:** Adds a single platform-level `tabOrder` property, exposed in
a shared **Accessibility** property-pane section for every standard
(non-Anvil) widget, letting builders optionally control keyboard Tab
order in fixed layout. Existing apps keep their exact current Tab
behavior unless `tabOrder` is explicitly set.

### What changed

- **Shared property pane plumbing** — `WidgetFactory` centrally appends
one shared `Accessibility > Tab order` section to both property-pane
paths (legacy `getPropertyPaneConfig` and content config) via
`WidgetProvider/factory/tabOrderPropertyConfig.ts`. No per-widget config
edits, no per-widget property names or validation rules. Anvil-only
(`WDS_*`, `SECTION_WIDGET`, `ZONE_WIDGET`) and internal widgets
(`CANVAS_WIDGET`, `SKELETON_WIDGET`, `TABS_MIGRATOR_WIDGET`) are
excluded; widgets without a property pane stay untouched.
- **New `TAB_ORDER_INPUT` control** (`TabOrderControl`) reusing the ADS
`NumberInput`: persists only valid non-negative integers as numbers,
removes the property from the DSL when cleared (blank always means
Auto), never persists `""` or invalid input. Not JS-convertible
(`isJSConvertible/isBindProperty/isTriggerProperty: false`), validated
as `ValidationTypes.NUMBER { min: 0, natural: true }`.
- **Runtime** — `PositionedContainer` renders a sanitized
`data-tab-order` attribute only for valid explicit values (`0` is valid
and earliest). No positive native `tabIndex` is ever used, so
non-focusable widgets stay non-focusable.
- **Fixed-layout tabbing** (`useWidgetFocus/tabbable.ts`) — new
`sortTabbableWidgets()`: when no widget in the current scope has a valid
explicit order, it delegates to the unchanged `sortWidgetsByPosition`
(exact current behavior). Otherwise, explicitly ordered widgets come
first ascending (duplicates tie-break by position), Auto/invalid widgets
follow in existing position order, and Shift+Tab reverses the same
sequence. Modal, container, JSONForm, CheckboxGroup, SwitchGroup and
ButtonGroup behaviors are preserved.

### Compatibility

- No DSL migration, no `LATEST_PAGE_VERSION` bump, no widget default
pollution — `tabOrder` only exists in a DSL after a builder sets it.
- Auto layout is intentionally unchanged: `useWidgetFocus` opts out of
auto layout, so `tabOrder` is currently enforced only by the
fixed-layout custom tabbing (`FlexComponent` and `layoutSystems/anvil/*`
untouched).

### Security notes

- No JS/eval support for the field; numeric-only non-negative integer
validation at the control, and re-sanitization at every runtime read
(`sanitizeTabOrder`).
- Only a sanitized integer is reflected into the DOM attribute; no
user-controlled selectors or HTML; invalid values are ignored and
treated as Auto.

### Tests

- `utils/widgetTabOrder.test.ts` — sanitizer value rules (0 valid;
null/blank/decimals/negatives/NaN/Infinity/non-numeric → Auto).
- `utils/hooks/useWidgetFocus/tabbable.test.ts` — all-Auto preserves
position order; explicit overrides position; 0 before 1; explicit widget
above/left can be next; duplicate tie-break; blank/invalid → Auto;
Shift+Tab; nested container scope; modal scope; composite widgets keep
native internal tabbing.
- `WidgetProvider/factory/tabOrderPropertyConfig.test.ts` — unit tests
plus an integration test over all registered widgets proving standard
non-Anvil widgets expose exactly one identical shared property and
Anvil/internal widgets expose none.
- `components/propertyControls/TabOrderControl.test.tsx` — persistence
semantics incl. regression that clearing returns to Auto without
persisting an invalid value.
- `components/designSystems/appsmith/PositionedContainer.test.tsx` —
`data-tab-order` renders only for valid explicit values (including `0`),
never a native `tabindex`.

Fixes #37947 

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29929171193>
> Commit: aba0b0f
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29929171193&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 22 Jul 2026 20:30:36 UTC
<!-- end of auto-generated comment: Cypress test results  -->

## Communication
Should the DevRel and Marketing teams inform users about this change?
- [x] Yes
- [ ] No

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added explicit `tabOrder` support for eligible widgets via a shared
Accessibility property-pane section (clearable numeric input).
* Introduced a tab-order overlay badge in the editor with an **Alt+T**
hotkey toggle.
* **Bug Fixes**
* Improved keyboard navigation and reverse traversal to respect
explicit/automatic tab order.
* Prevented focus handling from getting stuck when no focusable target
is available.
* **Tests**
* Expanded coverage for property-pane integration, tab-order rendering,
overlay badge behavior, keyboard traversal, and numeric input
interactions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Stacey Levine <stacey@levineclan.net>
…ent (GHSA-h5qf-426x-5mv5) (#42023)

Security fix. See
[GHSA-h5qf-426x-5mv5](https://github.com/appsmithorg/appsmith/security/advisories/GHSA-h5qf-426x-5mv5)
for full vulnerability details (restricted).

### CE/EE sync

EE mirror PR: appsmithorg/appsmith-ee#9345 — **both PRs must be merged
before disclosure.**

CE user path (`username`) is fixed here. EE GAC UserGroup path
(`@FeatureFlagged(license_gac_enabled)`) is fixed in the EE PR.

### Disclosure

> **Do not merge until advisory is ready for disclosure coordination.**
>
> After merge:
> 1. Confirm fix is in release branch on both CE and EE
> 2. Coordinate with security team on disclosure timeline
> 3. Update advisory with patched version and publish
> 4. Notify reporter

## Automation

/ok-to-test tags="@tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29984991856>
> Commit: d87d8db
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29984991856&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Thu, 23 Jul 2026 06:58:11 UTC
<!-- end of auto-generated comment: Cypress test results  -->

## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No

---------

Co-authored-by: appsmith-smithes[bot] <appsmith-smithes[bot]@users.noreply.github.com>
Co-authored-by: subrata71 <subrata@appsmith.com>
## What & why

`deploy/docker/fs/opt/appsmith/templates/docker.env.sh` shipped a
permissive default:

```
APPSMITH_ALLOWED_FRAME_ANCESTORS="'self' *"
```

The `*` meant every self-hosted instance allowed **any** origin to frame
its published apps by default, exposing published-app viewer routes to
clickjacking (UI redressing) unless an operator explicitly tightened the
setting. Reported in the Astra 2026 pentest.

This change stops shipping the wildcard value. The assignment is now
commented out, so **fresh installs fall through to the safe `'self'`
default** that `caddy-reconfigure.mjs` already applies when the variable
is empty/unset. `'self'` permits only same-origin framing (the instance
framing itself, e.g. the embed-settings preview) and blocks all
cross-origin framing.

Also:
- Fixes the stale comment that wrongly claimed the default was `'none'`.
- Adds `deploy/docker/tests/docker-env-defaults-test.sh` (wired into the
Caddy route-tests workflow) that renders the template and asserts it
ships no permissive wildcard frame-ancestors default.

## Scope

Fresh-install default **value** only. The runtime fallback in
`caddy-reconfigure.mjs` is unchanged, and route-matching
(`@framed`/`@embeddable`) is untouched. Existing installs are handled
separately (see below).

## ⚠️ RELEASE NOTES / BREAKING (behavior change for NEW installs only)

- **Existing installs are unchanged.** `docker.env` is generated once on
first install and preserved across upgrades (`init_env_file()`
regenerates it only when the file is absent), so any
previously-persisted `APPSMITH_ALLOWED_FRAME_ANCESTORS` value is kept
as-is.
- **New installs now default to same-origin-only framing** (`'self'`).
Published apps can no longer be embedded on external origins out of the
box.
- **Operators who want open or cross-origin embedding must set it
explicitly**, either via **Admin Settings → Embed settings → "Allow
embedding everywhere"** (or "Limit embedding" with a list of trusted
URLs), or by setting the `APPSMITH_ALLOWED_FRAME_ANCESTORS` env var.

## Testing

- New `docker-env-defaults-test.sh` passes on the updated template and
fails against the old `'self' *` value (verified). Wired into
`.github/workflows/caddy-routes-test.yml`.
- Existing Caddy route-tests already assert `'self'` as the effective
default when the var is unset/empty (specs 1 and 7) and remain green.

Linear: https://linear.app/appsmith/issue/APP-15353


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Security**
* Updated the default framing policy to allow embedding only from the
same origin.
  * Removed the permissive wildcard framing default.

* **Tests**
* Added automated validation to prevent unsafe framing defaults from
being introduced.
  * Integrated the validation into the continuous integration checks.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->


## Automation
/ok-to-test tags="@tag.All"

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/29981189434>
> Commit: 0c1f204
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=29981189434&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Thu, 23 Jul 2026 06:18:05 UTC
<!-- end of auto-generated comment: Cypress test results  -->

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…file read/write (GHSA-fqwc-g9wm-5895) (#41993)

## Description

CE port of [EE PR](appsmithorg/appsmith-ee#9250)
(already merged and deployed in v2.2).

Fixes a Critical (CVSS 9.9) symlink path traversal in the Git
import/commit feature that allows any authenticated user to read
arbitrary server files and achieve RCE via symlink tree entries (git
mode 120000).

**Defense-in-depth fix across all three clone paths:**

- `FileUtilsCEImpl.validatePathIsWithinGitRoot` — symlink-aware
real-path containment check (`toRealPath`), fails closed
- `FileUtilsCEImpl.writeStringToFile` — validates the concrete file path
before writing
- `GitExecutorCEImpl` + `FSGitHandlerCEImpl` — post-clone symlink
removal (`core.symlinks=false` + delete symlinks + re-checkout)
- `git.sh` — `git config core.symlinks false` after clone in the
bash/in-memory git path

Fixes APP-15328

### Vulnerability

| Field | Value |
|-------|-------|
| **GHSA** |
[GHSA-fqwc-g9wm-5895](https://github.com/appsmithorg/appsmith/security/advisories/GHSA-fqwc-g9wm-5895)
|
| **CVSS** | 9.9 (critical) |
| **CWE** | CWE-59 (Improper Link Resolution Before File Access) |

### EE PR

Merged: appsmithorg/appsmith-ee#9250

## Automation

/ok-to-test tags="@tag.Git"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/30015198768>
> Commit: b6ee5c2
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=30015198768&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Thu, 23 Jul 2026 14:37:21 UTC
<!-- end of auto-generated comment: Cypress test results  -->

## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Strengthened Git-root protections with symlink-aware, fail-closed
validation to prevent path traversal during file/metadata writes.
* Tightened action metadata saving to validate the full metadata target
location before writing.
* Improved post-clone symlink remediation to fail fast: cleanup is
attempted and remediation failures now propagate instead of continuing.
* Disabled symlink behavior during clone to avoid malicious symlink
entries being checked out as symlinks.
* **Tests**
* Added automated coverage for symlink escape attempts and verified
symlink entries are checked out as regular files.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
dependabot Bot and others added 3 commits July 24, 2026 01:07
Bumps [axios](https://github.com/axios/axios) from 1.16.1 to 1.18.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/releases">axios's
releases</a>.</em></p>
<blockquote>
<h2>v1.18.0 — June 13, 2026</h2>
<p>This release hardens redirect and URL handling, improves the
validateStatus configuration semantics, and includes updates to
documentation, dependencies, and release metadata.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li>
<p><strong>Redirect Header Safety:</strong> Added Node HTTP adapter
support for stripping caller-specified sensitive headers on cross-origin
redirects, helping prevent custom auth headers such as API keys from
leaking to another origin. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10892">#10892</a></strong>)</p>
</li>
<li>
<p><strong>URL And Request Hardening:</strong> Rejects malformed
<code>http:</code> and <code>https:</code> URLs that omit
<code>//</code> with <code>ERR_INVALID_URL</code>, while tightening
prototype-pollution-safe config reads, stream size limits, FormData
depth handling, data URL sizing, and local <code>NO_PROXY</code>
matching. (<strong><a
href="https://redirect.github.com/axios/axios/issues/11000">#11000</a></strong>)</p>
</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Status Validation:</strong> Added
<code>transitional.validateStatusUndefinedResolves</code> so
applications can opt in to treating <code>validateStatus:
undefined</code> like the option was omitted, while
<code>validateStatus: null</code> remains the explicit way to accept
every status. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
</ul>
<h2>🔧 Maintenance &amp; Chores</h2>
<ul>
<li>
<p><strong>Documentation:</strong> Published the v1.17.0 release notes,
fixed a changelog typo, clarified the package update PR policy, and
marked the <code>proxy</code> request config as Node.js-only in the
advanced docs. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10988">#10988</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10992">#10992</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</p>
</li>
<li>
<p><strong>Dependencies:</strong> Bumped <code>@babel/core</code>,
<code>@babel/preset-env</code>, <code>@commitlint/cli</code>,
<code>@commitlint/config-conventional</code>,
<code>@rollup/plugin-babel</code>, <code>@rollup/plugin-commonjs</code>,
<code>@vitest/browser</code>, <code>@vitest/browser-playwright</code>,
<code>eslint</code>, <code>lint-staged</code>, <code>rollup</code>,
<code>vitest</code>, and <code>actions/checkout</code>. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10989">#10989</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10996">#10996</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10997">#10997</a></strong>)</p>
</li>
<li>
<p><strong>Release Metadata:</strong> Prepared the 1.18.0 release by
updating package metadata and the runtime <code>VERSION</code> value.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/11003">#11003</a></strong>)</p>
</li>
</ul>
<h2>🌟 New Contributors</h2>
<p>We are thrilled to welcome our new contributors. Thank you for
helping improve axios:</p>
<ul>
<li><strong><a
href="https://github.com/drori12"><code>@​drori12</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>)</li>
<li><strong><a
href="https://github.com/eyupcanakman"><code>@​eyupcanakman</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
<li><strong><a
href="https://github.com/Adi-Beker"><code>@​Adi-Beker</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</li>
</ul>
<p><a
href="https://github.com/axios/axios/compare/v1.17.0...v1.18.0">Full
Changelog</a></p>
<h2>v1.17.0 — June 1, 2026</h2>
<p>This release adds Node HTTP zstd decompression, hardens config and
release workflows, and fixes authentication, header, proxy, and
type-handling regressions.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li><strong>Config Hardening:</strong> Guarded <code>socketPath</code>,
<code>params</code>, and <code>paramsSerializer</code> reads with
own-property checks to prevent inherited prototype values from affecting
request behavior, including SSRF-sensitive paths. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10901">#10901</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10922">#10922</a></strong>)</li>
<li><strong>Release Publishing:</strong> Switched the publish workflow
to npm staged publishing for safer, auditable package releases with
provenance. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10926">#10926</a></strong>)</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li><strong>HTTP Compression:</strong> Added Node HTTP adapter support
for zstd response decompression, with
<code>transitional.advertiseZstdAcceptEncoding</code> controlling
whether <code>zstd</code> is advertised in <code>Accept-Encoding</code>.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/6792">#6792</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10920">#10920</a></strong>)</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Authentication Handling:</strong> Restored Basic auth on
same-origin Node redirects while continuing to strip credentials
cross-origin, and aligned the fetch adapter with HTTP adapter behavior
for URL-embedded Basic auth. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10929">#10929</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10896">#10896</a></strong>)</li>
<li><strong>Proxy TLS:</strong> Preserved user <code>httpsAgent</code>
TLS options when tunneling HTTPS requests through HTTP CONNECT proxies.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10957">#10957</a></strong>)</li>
<li><strong>React Native FormData:</strong> Cleared default
<code>Content-Type</code> for React Native <code>FormData</code> so
multipart boundaries can be generated correctly. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10898">#10898</a></strong>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/blob/v1.x/CHANGELOG.md">axios's
changelog</a>.</em></p>
<blockquote>
<h2>v1.18.0 — June 13, 2026</h2>
<p>This release hardens redirect and URL handling, improves the
validateStatus configuration semantics, and includes updates to
documentation, dependencies, and release metadata.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li>
<p><strong>Redirect Header Safety:</strong> Added Node HTTP adapter
support for stripping caller-specified sensitive headers on cross-origin
redirects, helping prevent custom auth headers such as API keys from
leaking to another origin. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10892">#10892</a></strong>)</p>
</li>
<li>
<p><strong>URL And Request Hardening:</strong> Rejects malformed
<code>http:</code> and <code>https:</code> URLs that omit
<code>//</code> with <code>ERR_INVALID_URL</code>, while tightening
prototype-pollution-safe config reads, stream size limits, FormData
depth handling, data URL sizing, and local <code>NO_PROXY</code>
matching. (<strong><a
href="https://redirect.github.com/axios/axios/issues/11000">#11000</a></strong>)</p>
</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Status Validation:</strong> Added
<code>transitional.validateStatusUndefinedResolves</code> so
applications can opt in to treating <code>validateStatus:
undefined</code> like the option was omitted, while
<code>validateStatus: null</code> remains the explicit way to accept
every status. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
</ul>
<h2>🔧 Maintenance &amp; Chores</h2>
<ul>
<li>
<p><strong>Documentation:</strong> Published the v1.17.0 release notes,
fixed a changelog typo, clarified the package update PR policy, and
marked the <code>proxy</code> request config as Node.js-only in the
advanced docs. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10988">#10988</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10992">#10992</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</p>
</li>
<li>
<p><strong>Dependencies:</strong> Bumped <code>@babel/core</code>,
<code>@babel/preset-env</code>, <code>@commitlint/cli</code>,
<code>@commitlint/config-conventional</code>,
<code>@rollup/plugin-babel</code>, <code>@rollup/plugin-commonjs</code>,
<code>@vitest/browser</code>, <code>@vitest/browser-playwright</code>,
<code>eslint</code>, <code>lint-staged</code>, <code>rollup</code>,
<code>vitest</code>, and <code>actions/checkout</code>. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10989">#10989</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10996">#10996</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10997">#10997</a></strong>)</p>
</li>
<li>
<p><strong>Release Metadata:</strong> Prepared the 1.18.0 release by
updating package metadata and the runtime <code>VERSION</code> value.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/11003">#11003</a></strong>)</p>
</li>
</ul>
<h2>🌟 New Contributors</h2>
<p>We are thrilled to welcome our new contributors. Thank you for
helping improve axios:</p>
<ul>
<li><strong><a
href="https://github.com/drori12"><code>@​drori12</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>)</li>
<li><strong><a
href="https://github.com/eyupcanakman"><code>@​eyupcanakman</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
<li><strong><a
href="https://github.com/Adi-Beker"><code>@​Adi-Beker</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</li>
</ul>
<p><a
href="https://github.com/axios/axios/compare/v1.17.0...v1.18.0">Full
Changelog</a></p>
<h2>v1.17.0 — June 1, 2026</h2>
<p>This release adds Node HTTP zstd decompression, hardens config and
release workflows, and fixes authentication, header, proxy, and
type-handling regressions.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li><strong>Config Hardening:</strong> Guarded <code>socketPath</code>,
<code>params</code>, and <code>paramsSerializer</code> reads with
own-property checks to prevent inherited prototype values from affecting
request behavior, including SSRF-sensitive paths. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10901">#10901</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10922">#10922</a></strong>)</li>
<li><strong>Release Publishing:</strong> Switched the publish workflow
to npm staged publishing for safer, auditable package releases with
provenance. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10926">#10926</a></strong>)</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li><strong>HTTP Compression:</strong> Added Node HTTP adapter support
for zstd response decompression, with
<code>transitional.advertiseZstdAcceptEncoding</code> controlling
whether <code>zstd</code> is advertised in <code>Accept-Encoding</code>.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/6792">#6792</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10920">#10920</a></strong>)</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Authentication Handling:</strong> Restored Basic auth on
same-origin Node redirects while continuing to strip credentials
cross-origin, and aligned the fetch adapter with HTTP adapter behavior
for URL-embedded Basic auth. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10929">#10929</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10896">#10896</a></strong>)</li>
<li><strong>Proxy TLS:</strong> Preserved user <code>httpsAgent</code>
TLS options when tunneling HTTPS requests through HTTP CONNECT proxies.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10957">#10957</a></strong>)</li>
<li><strong>React Native FormData:</strong> Cleared default
<code>Content-Type</code> for React Native <code>FormData</code> so
multipart boundaries can be generated correctly. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10898">#10898</a></strong>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/axios/axios/commit/2d06f96e8602c2db13b65a26340ee4a1bbc0b61f"><code>2d06f96</code></a>
chore(release): prepare release 1.18.0 (<a
href="https://redirect.github.com/axios/axios/issues/11003">#11003</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/32fc489632377d214db55bfa4e2c48486a7d7ce2"><code>32fc489</code></a>
fix: malformed http urls (<a
href="https://redirect.github.com/axios/axios/issues/11000">#11000</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/b40ce498abfa10d90b873b4fd08f520afa5d2545"><code>b40ce49</code></a>
chore(deps-dev): bump the development_dependencies group with 10 updates
(<a
href="https://redirect.github.com/axios/axios/issues/10">#10</a>...</li>
<li><a
href="https://github.com/axios/axios/commit/fe964f960ecb52c3e1155b0daf7be77541956b01"><code>fe964f9</code></a>
docs: mark proxy config as Node.js only (<a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/5f229d2d1f018d1db3dab6bbe034dbf3f9041b99"><code>5f229d2</code></a>
chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the
github-actions ...</li>
<li><a
href="https://github.com/axios/axios/commit/fae9d4e7db6a858c407c75e607a071c533c5c4f6"><code>fae9d4e</code></a>
docs: clarify package update PR policy (<a
href="https://redirect.github.com/axios/axios/issues/10992">#10992</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/28ab2ced820e55192806c53472ab3eb0cbb68dc2"><code>28ab2ce</code></a>
chore(deps-dev): bump the development_dependencies group with 2 updates
(<a
href="https://redirect.github.com/axios/axios/issues/10989">#10989</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/a8e4f13aeecc45a3b8fab3ecfd9ddb5d70fb772b"><code>a8e4f13</code></a>
fix(core): keep default validateStatus when request passes undefined (<a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/614f4552a17de757d4171ad7c3bd38c9c1025fd8"><code>614f455</code></a>
docs: publish v1.17.0 release notes (<a
href="https://redirect.github.com/axios/axios/issues/10988">#10988</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/6bb12c191f5380fad321322fb90216ae0dc36985"><code>6bb12c1</code></a>
fix: custom auth headers not stripped on cross-origin redirects (<a
href="https://redirect.github.com/axios/axios/issues/10892">#10892</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/axios/axios/compare/v1.16.1...v1.18.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=axios&package-manager=npm_and_yarn&previous-version=1.16.1&new-version=1.18.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/appsmithorg/appsmith/network/alerts).

</details>

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/30030570832>
> Commit: ba44e34
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=30030570832&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Thu, 23 Jul 2026 19:01:59 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Automation
/ok-to-test tags="@tag.All"

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…-3jrh-7fpw) (#42034)

## Summary

Resolves Dependabot alert #692 — **CRITICAL** severity.

### Vulnerability

**Package:** `tar` (node-tar)
**CVE:** CVE-2026-59873 | **GHSA:** GHSA-23hp-3jrh-7fpw | **Severity:**
CRITICAL
**Vulnerable range:** ≤ 7.5.18
**Patched version:** 7.5.19+

**Description:** A Decompression/parse DoS via unlimited input ("Gzip
Bomb"). `node-tar` does not enforce a hard upper bound on total
decompressed data. An attacker can craft a tiny compressed archive that
expands to exhaust all available disk space, causing system-wide failure
and service outage.

### Root Cause (CE vs EE Discrepancy)

EE already had this fixed — it pinned `"tar": "^7.5.19"` in
`resolutions`.
CE had a stale hard-pin: `"tar": "7.5.16"` (the vulnerable version).

### Fix

Bumped `resolutions.tar` from `"7.5.16"` → `"^7.5.19"` in
`app/client/package.json`, mirroring the EE fix exactly. Lockfile
updated: `tar` now resolves to `7.5.21`.

**No code changes** — resolutions bump and lockfile update only.

### Diff

| File | Change |
|------|--------|
| `app/client/package.json` | `"tar": "7.5.16"` → `"tar": "^7.5.19"` |
| `app/client/yarn.lock` | `tar` entry updated from `7.5.16` → `7.5.21`
|

/ok-to-test tags="@tag.All"

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/30037477020>
> Commit: fd67a8d
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=30037477020&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Fri, 24 Jul 2026 04:03:03 UTC
<!-- end of auto-generated comment: Cypress test results  -->

Co-authored-by: appsmith-smithes[bot] <appsmith-smithes[bot]@users.noreply.github.com>
Bumps [axios](https://github.com/axios/axios) from 1.16.1 to 1.18.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/releases">axios's
releases</a>.</em></p>
<blockquote>
<h2>v1.18.0 — June 13, 2026</h2>
<p>This release hardens redirect and URL handling, improves the
validateStatus configuration semantics, and includes updates to
documentation, dependencies, and release metadata.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li>
<p><strong>Redirect Header Safety:</strong> Added Node HTTP adapter
support for stripping caller-specified sensitive headers on cross-origin
redirects, helping prevent custom auth headers such as API keys from
leaking to another origin. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10892">#10892</a></strong>)</p>
</li>
<li>
<p><strong>URL And Request Hardening:</strong> Rejects malformed
<code>http:</code> and <code>https:</code> URLs that omit
<code>//</code> with <code>ERR_INVALID_URL</code>, while tightening
prototype-pollution-safe config reads, stream size limits, FormData
depth handling, data URL sizing, and local <code>NO_PROXY</code>
matching. (<strong><a
href="https://redirect.github.com/axios/axios/issues/11000">#11000</a></strong>)</p>
</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Status Validation:</strong> Added
<code>transitional.validateStatusUndefinedResolves</code> so
applications can opt in to treating <code>validateStatus:
undefined</code> like the option was omitted, while
<code>validateStatus: null</code> remains the explicit way to accept
every status. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
</ul>
<h2>🔧 Maintenance &amp; Chores</h2>
<ul>
<li>
<p><strong>Documentation:</strong> Published the v1.17.0 release notes,
fixed a changelog typo, clarified the package update PR policy, and
marked the <code>proxy</code> request config as Node.js-only in the
advanced docs. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10988">#10988</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10992">#10992</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</p>
</li>
<li>
<p><strong>Dependencies:</strong> Bumped <code>@babel/core</code>,
<code>@babel/preset-env</code>, <code>@commitlint/cli</code>,
<code>@commitlint/config-conventional</code>,
<code>@rollup/plugin-babel</code>, <code>@rollup/plugin-commonjs</code>,
<code>@vitest/browser</code>, <code>@vitest/browser-playwright</code>,
<code>eslint</code>, <code>lint-staged</code>, <code>rollup</code>,
<code>vitest</code>, and <code>actions/checkout</code>. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10989">#10989</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10996">#10996</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10997">#10997</a></strong>)</p>
</li>
<li>
<p><strong>Release Metadata:</strong> Prepared the 1.18.0 release by
updating package metadata and the runtime <code>VERSION</code> value.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/11003">#11003</a></strong>)</p>
</li>
</ul>
<h2>🌟 New Contributors</h2>
<p>We are thrilled to welcome our new contributors. Thank you for
helping improve axios:</p>
<ul>
<li><strong><a
href="https://github.com/drori12"><code>@​drori12</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>)</li>
<li><strong><a
href="https://github.com/eyupcanakman"><code>@​eyupcanakman</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
<li><strong><a
href="https://github.com/Adi-Beker"><code>@​Adi-Beker</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</li>
</ul>
<p><a
href="https://github.com/axios/axios/compare/v1.17.0...v1.18.0">Full
Changelog</a></p>
<h2>v1.17.0 — June 1, 2026</h2>
<p>This release adds Node HTTP zstd decompression, hardens config and
release workflows, and fixes authentication, header, proxy, and
type-handling regressions.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li><strong>Config Hardening:</strong> Guarded <code>socketPath</code>,
<code>params</code>, and <code>paramsSerializer</code> reads with
own-property checks to prevent inherited prototype values from affecting
request behavior, including SSRF-sensitive paths. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10901">#10901</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10922">#10922</a></strong>)</li>
<li><strong>Release Publishing:</strong> Switched the publish workflow
to npm staged publishing for safer, auditable package releases with
provenance. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10926">#10926</a></strong>)</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li><strong>HTTP Compression:</strong> Added Node HTTP adapter support
for zstd response decompression, with
<code>transitional.advertiseZstdAcceptEncoding</code> controlling
whether <code>zstd</code> is advertised in <code>Accept-Encoding</code>.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/6792">#6792</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10920">#10920</a></strong>)</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Authentication Handling:</strong> Restored Basic auth on
same-origin Node redirects while continuing to strip credentials
cross-origin, and aligned the fetch adapter with HTTP adapter behavior
for URL-embedded Basic auth. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10929">#10929</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10896">#10896</a></strong>)</li>
<li><strong>Proxy TLS:</strong> Preserved user <code>httpsAgent</code>
TLS options when tunneling HTTPS requests through HTTP CONNECT proxies.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10957">#10957</a></strong>)</li>
<li><strong>React Native FormData:</strong> Cleared default
<code>Content-Type</code> for React Native <code>FormData</code> so
multipart boundaries can be generated correctly. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10898">#10898</a></strong>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/blob/v1.x/CHANGELOG.md">axios's
changelog</a>.</em></p>
<blockquote>
<h2>v1.18.0 — June 13, 2026</h2>
<p>This release hardens redirect and URL handling, improves the
validateStatus configuration semantics, and includes updates to
documentation, dependencies, and release metadata.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li>
<p><strong>Redirect Header Safety:</strong> Added Node HTTP adapter
support for stripping caller-specified sensitive headers on cross-origin
redirects, helping prevent custom auth headers such as API keys from
leaking to another origin. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10892">#10892</a></strong>)</p>
</li>
<li>
<p><strong>URL And Request Hardening:</strong> Rejects malformed
<code>http:</code> and <code>https:</code> URLs that omit
<code>//</code> with <code>ERR_INVALID_URL</code>, while tightening
prototype-pollution-safe config reads, stream size limits, FormData
depth handling, data URL sizing, and local <code>NO_PROXY</code>
matching. (<strong><a
href="https://redirect.github.com/axios/axios/issues/11000">#11000</a></strong>)</p>
</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Status Validation:</strong> Added
<code>transitional.validateStatusUndefinedResolves</code> so
applications can opt in to treating <code>validateStatus:
undefined</code> like the option was omitted, while
<code>validateStatus: null</code> remains the explicit way to accept
every status. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
</ul>
<h2>🔧 Maintenance &amp; Chores</h2>
<ul>
<li>
<p><strong>Documentation:</strong> Published the v1.17.0 release notes,
fixed a changelog typo, clarified the package update PR policy, and
marked the <code>proxy</code> request config as Node.js-only in the
advanced docs. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10988">#10988</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10992">#10992</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</p>
</li>
<li>
<p><strong>Dependencies:</strong> Bumped <code>@babel/core</code>,
<code>@babel/preset-env</code>, <code>@commitlint/cli</code>,
<code>@commitlint/config-conventional</code>,
<code>@rollup/plugin-babel</code>, <code>@rollup/plugin-commonjs</code>,
<code>@vitest/browser</code>, <code>@vitest/browser-playwright</code>,
<code>eslint</code>, <code>lint-staged</code>, <code>rollup</code>,
<code>vitest</code>, and <code>actions/checkout</code>. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10989">#10989</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10996">#10996</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10997">#10997</a></strong>)</p>
</li>
<li>
<p><strong>Release Metadata:</strong> Prepared the 1.18.0 release by
updating package metadata and the runtime <code>VERSION</code> value.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/11003">#11003</a></strong>)</p>
</li>
</ul>
<h2>🌟 New Contributors</h2>
<p>We are thrilled to welcome our new contributors. Thank you for
helping improve axios:</p>
<ul>
<li><strong><a
href="https://github.com/drori12"><code>@​drori12</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10984">#10984</a></strong>)</li>
<li><strong><a
href="https://github.com/eyupcanakman"><code>@​eyupcanakman</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a></strong>)</li>
<li><strong><a
href="https://github.com/Adi-Beker"><code>@​Adi-Beker</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a></strong>)</li>
</ul>
<p><a
href="https://github.com/axios/axios/compare/v1.17.0...v1.18.0">Full
Changelog</a></p>
<h2>v1.17.0 — June 1, 2026</h2>
<p>This release adds Node HTTP zstd decompression, hardens config and
release workflows, and fixes authentication, header, proxy, and
type-handling regressions.</p>
<h2>🔒 Security Fixes</h2>
<ul>
<li><strong>Config Hardening:</strong> Guarded <code>socketPath</code>,
<code>params</code>, and <code>paramsSerializer</code> reads with
own-property checks to prevent inherited prototype values from affecting
request behavior, including SSRF-sensitive paths. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10901">#10901</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10922">#10922</a></strong>)</li>
<li><strong>Release Publishing:</strong> Switched the publish workflow
to npm staged publishing for safer, auditable package releases with
provenance. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10926">#10926</a></strong>)</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li><strong>HTTP Compression:</strong> Added Node HTTP adapter support
for zstd response decompression, with
<code>transitional.advertiseZstdAcceptEncoding</code> controlling
whether <code>zstd</code> is advertised in <code>Accept-Encoding</code>.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/6792">#6792</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10920">#10920</a></strong>)</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Authentication Handling:</strong> Restored Basic auth on
same-origin Node redirects while continuing to strip credentials
cross-origin, and aligned the fetch adapter with HTTP adapter behavior
for URL-embedded Basic auth. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10929">#10929</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/issues/10896">#10896</a></strong>)</li>
<li><strong>Proxy TLS:</strong> Preserved user <code>httpsAgent</code>
TLS options when tunneling HTTPS requests through HTTP CONNECT proxies.
(<strong><a
href="https://redirect.github.com/axios/axios/issues/10957">#10957</a></strong>)</li>
<li><strong>React Native FormData:</strong> Cleared default
<code>Content-Type</code> for React Native <code>FormData</code> so
multipart boundaries can be generated correctly. (<strong><a
href="https://redirect.github.com/axios/axios/issues/10898">#10898</a></strong>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/axios/axios/commit/2d06f96e8602c2db13b65a26340ee4a1bbc0b61f"><code>2d06f96</code></a>
chore(release): prepare release 1.18.0 (<a
href="https://redirect.github.com/axios/axios/issues/11003">#11003</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/32fc489632377d214db55bfa4e2c48486a7d7ce2"><code>32fc489</code></a>
fix: malformed http urls (<a
href="https://redirect.github.com/axios/axios/issues/11000">#11000</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/b40ce498abfa10d90b873b4fd08f520afa5d2545"><code>b40ce49</code></a>
chore(deps-dev): bump the development_dependencies group with 10 updates
(<a
href="https://redirect.github.com/axios/axios/issues/10">#10</a>...</li>
<li><a
href="https://github.com/axios/axios/commit/fe964f960ecb52c3e1155b0daf7be77541956b01"><code>fe964f9</code></a>
docs: mark proxy config as Node.js only (<a
href="https://redirect.github.com/axios/axios/issues/10995">#10995</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/5f229d2d1f018d1db3dab6bbe034dbf3f9041b99"><code>5f229d2</code></a>
chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the
github-actions ...</li>
<li><a
href="https://github.com/axios/axios/commit/fae9d4e7db6a858c407c75e607a071c533c5c4f6"><code>fae9d4e</code></a>
docs: clarify package update PR policy (<a
href="https://redirect.github.com/axios/axios/issues/10992">#10992</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/28ab2ced820e55192806c53472ab3eb0cbb68dc2"><code>28ab2ce</code></a>
chore(deps-dev): bump the development_dependencies group with 2 updates
(<a
href="https://redirect.github.com/axios/axios/issues/10989">#10989</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/a8e4f13aeecc45a3b8fab3ecfd9ddb5d70fb772b"><code>a8e4f13</code></a>
fix(core): keep default validateStatus when request passes undefined (<a
href="https://redirect.github.com/axios/axios/issues/10899">#10899</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/614f4552a17de757d4171ad7c3bd38c9c1025fd8"><code>614f455</code></a>
docs: publish v1.17.0 release notes (<a
href="https://redirect.github.com/axios/axios/issues/10988">#10988</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/6bb12c191f5380fad321322fb90216ae0dc36985"><code>6bb12c1</code></a>
fix: custom auth headers not stripped on cross-origin redirects (<a
href="https://redirect.github.com/axios/axios/issues/10892">#10892</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/axios/axios/compare/v1.16.1...v1.18.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=axios&package-manager=npm_and_yarn&previous-version=1.16.1&new-version=1.18.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/appsmithorg/appsmith/network/alerts).

</details>

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/30037833847>
> Commit: 24fe9a0
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=30037833847&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Fri, 24 Jul 2026 05:50:15 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Automation
/ok-to-test tags="@tag.All"

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@appsmith-smithes
appsmith-smithes Bot requested a review from a team as a code owner July 24, 2026 06:21
@appsmith-smithes appsmith-smithes Bot added the ok-to-test Required label for CI label Jul 24, 2026
amelia-c0n and others added 3 commits July 24, 2026 11:42
… step (#42050)

## Description

The client-build job fails with `Argument list too long` on PRs with a
large divergence (most recently the release-to-master promotion in EE).
The "Run step if any file(s) in the client folder change" step passes
`steps.changed-files-specific.outputs.all_changed_files` through an env
var solely to echo it; when the list exceeds the 128KiB per-string exec
limit, bash cannot be started and the job fails before doing any work.

This switches the step to the file-output pattern `server-build.yml`
already uses: `write_output_files: true` on the tj-actions/changed-files
step, and `cat` of `.github/outputs/all_changed_files.txt` instead of
the env var. The `any_changed` gating used by the rest of the workflow
is unchanged.

Linear: https://linear.app/appsmith/issue/APP-15724

## Automation

CI-workflow-only change; Cypress not applicable.

/ok-to-test tags=""

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
  * Improved client build workflow handling for changed-file detection.
* Changed files are now consistently recorded and displayed during the
build process.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
## Summary
Batch security update via resolutions/version bumps.

### Resolved alerts
- Resolves #707 — org.postgresql:postgresql -> 42.7.12 (CVE-2026-42198,
high)
- Resolves #695, #694 — webpack-dev-server -> 5.2.6 (medium)
- Resolves #701, #700 — immutable -> 4.3.9 (via resolutions, high)
- Resolves #689 — shell-quote -> 1.9.0 (via resolutions, high)
- Resolves #688 — brace-expansion -> 1.1.16 (via resolutions, high)
- Resolves #685 — protobufjs -> 7.6.5 (via resolutions, medium)
- Resolves #706, #702 — fast-uri -> 3.1.4 (via resolutions, high)
- Resolves #704 — svgo (2.x line) -> 2.8.3 (via resolutions, high)
- Resolves #705 — svgo (3.x line) -> 3.3.4 (via resolutions, high)

### Not addressed (see report)
- #654 @opentelemetry/core — requires major bump 1.x -> 2.8.0, skipped
- #703 @opentelemetry/propagator-jaeger — requires major bump 1.x ->
2.9.0, skipped

No code changes — version bumps and resolutions only.

/ok-to-test tags="@tag.All"

<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/30099141863>
> Commit: 2d3ad47
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=30099141863&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Fri, 24 Jul 2026 15:45:58 UTC
<!-- end of auto-generated comment: Cypress test results  -->

Co-authored-by: appsmith-smithes[bot] <appsmith-smithes[bot]@users.noreply.github.com>
@subrata71
subrata71 requested a review from sharat87 as a code owner July 24, 2026 16:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Required label for CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants