diff --git a/README.md b/README.md
index a4dd10811..1efadde90 100644
--- a/README.md
+++ b/README.md
@@ -57,8 +57,9 @@ OpenReplay is a session replay suite you can host yourself, that lets you see wh
- **Session replay:** Lets you relive your users' experience, see where they struggle and how it affects their behavior. Each session replay is automatically analyzed based on heuristics, for easy triage.
- **DevTools:** It's like debugging in your own browser. OpenReplay provides you with the full context (network activity, JS errors, store actions/state and 40+ metrics) so you can instantly reproduce bugs and understand performance issues.
- **Assist:** Helps you support your users by seeing their live screen and instantly hopping on call (WebRTC) with them without requiring any 3rd-party screen sharing software.
+- **Feature flags:** Enable or disable a feature, make gradual releases and A/B test all without redeploying your app.
- **Omni-search:** Search and filter by almost any user action/criteria, session attribute or technical event, so you can answer any question. No instrumentation required.
-- **Funnels:** For surfacing the most impactful issues causing conversion and revenue loss.
+- **Analytics:** For surfacing the most impactful issues causing conversion and revenue loss.
- **Fine-grained privacy controls:** Choose what to capture, what to obscure or what to ignore so user data doesn't even reach your servers.
- **Plugins oriented:** Get to the root cause even faster by tracking application state (Redux, VueX, MobX, NgRx, Pinia and Zustand) and logging GraphQL queries (Apollo, Relay) and Fetch/Axios requests.
- **Integrations:** Sync your backend logs with your session replays and see what happened front-to-back. OpenReplay supports Sentry, Datadog, CloudWatch, Stackdriver, Elastic and more.
diff --git a/api/routers/core.py b/api/routers/core.py
index 3edcb9045..fa3037841 100644
--- a/api/routers/core.py
+++ b/api/routers/core.py
@@ -30,7 +30,7 @@ def events_search(projectId: int, q: str,
return {"data": []}
if live:
return assist.autocomplete(project_id=projectId, q=q,
- key=key if key is not None else type.value if type is not None else None)
+ key=key if key is not None else type)
if type in [schemas.FetchFilterType._url]:
type = schemas.EventType.request
elif type in [schemas.GraphqlFilterType._name]:
diff --git a/ee/api/clean-dev.sh b/ee/api/clean-dev.sh
index 3e28345d6..37913fe91 100755
--- a/ee/api/clean-dev.sh
+++ b/ee/api/clean-dev.sh
@@ -93,4 +93,5 @@ rm -rf ./build_alerts.sh
rm -rf ./run-dev.sh
rm -rf ./run-alerts-dev.sh
rm -rf ./schemas/overrides.py
-rm -rf ./schemas/schemas.py
\ No newline at end of file
+rm -rf ./schemas/schemas.py
+rm -rf ./schemas/transformers_validators.py
\ No newline at end of file
diff --git a/ee/api/schemas/schemas_ee.py b/ee/api/schemas/schemas_ee.py
index a437c8152..2c1f49a36 100644
--- a/ee/api/schemas/schemas_ee.py
+++ b/ee/api/schemas/schemas_ee.py
@@ -113,7 +113,7 @@ class SessionModel(BaseModel):
projectId: int
sessionId: str
startTs: int
- timezone: str
+ timezone: Optional[str]
userAnonymousId: Optional[str]
userBrowser: str
userCity: str
diff --git a/ee/recommendation/ml_trainer/requirements.txt b/ee/recommendation/ml_trainer/requirements.txt
index 4b6ae2175..7efa93d01 100644
--- a/ee/recommendation/ml_trainer/requirements.txt
+++ b/ee/recommendation/ml_trainer/requirements.txt
@@ -1,3 +1,3 @@
argcomplete==3.0.8
-apache-airflow==2.6.1
+apache-airflow==2.6.2
airflow-code-editor==7.2.1
diff --git a/frontend/app/components/Session_/Subheader.js b/frontend/app/components/Session_/Subheader.js
index f0fb576f1..8bdb572b8 100644
--- a/frontend/app/components/Session_/Subheader.js
+++ b/frontend/app/components/Session_/Subheader.js
@@ -13,6 +13,8 @@ import { observer } from 'mobx-react-lite';
import AutoplayToggle from 'Shared/AutoplayToggle';
import { connect } from 'react-redux';
import SessionTabs from 'Components/Session/Player/SharedComponents/SessionTabs'
+import { IFRAME } from 'App/constants/storageKeys';
+import cn from 'classnames';
const localhostWarn = (project) => project + '_localhost_warn';
@@ -22,6 +24,7 @@ function SubHeader(props) {
const [showWarningModal, setWarning] = React.useState(defaultLocalhostWarn);
const { player, store } = React.useContext(PlayerContext);
const { width, height, endTime, location: currentLocation = 'loading...', } = store.get();
+ const hasIframe = localStorage.getItem(IFRAME) === "true";
const enabledIntegration = useMemo(() => {
@@ -104,7 +107,7 @@ function SubHeader(props) {
) : null}