diff --git a/CODEOWNERS b/CODEOWNERS
index fabb2ca64c..0124f366ae 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -193,6 +193,7 @@ app/server/appsmith-server/src/main/java/com/appsmith/server/exceptions/Appsmith
app/client/src/pages/Settings/**/* @ankitakinger
app/client/src/pages/workspace/settings.tsx @ankitakinger
app/client/src/pages/workspace/AppInviteUsersForm.tsx @ankitakinger
+app/client/src/pages/workspace/WorkspaceInviteUsersForm.tsx @ankitakinger
app/client/src/components/editorComponents/form/FormDialogComponent.tsx @ankitakinger
app/client/src/ce/pages/AdminSettings/**/* @ankitakinger
app/client/src/ee/pages/AdminSettings/**/* @ankitakinger
@@ -202,8 +203,8 @@ app/client/src/ce/pages/Applications/PrivateEmbedSettings.tsx @ankitakinger
app/client/src/ee/pages/Applications/PrivateEmbedSettings.tsx @ankitakinger
app/client/src/ce/pages/workspace/Members.tsx @ankitakinger
app/client/src/ee/pages/workspace/Members.tsx @ankitakinger
-app/client/src/ce/pages/workspace/WorkspaceInviteUsersForm.tsx @ankitakinger
-app/client/src/ee/pages/workspace/WorkspaceInviteUsersForm.tsx @ankitakinger
+app/client/src/ce/pages/workspace/InviteUsersForm.tsx @ankitakinger
+app/client/src/ee/pages/workspace/InviteUsersForm.tsx @ankitakinger
app/client/src/ce/pages/Upgrade/**/* @ankitakinger
app/client/src/ee/pages/Auditlogs/**/* @ankitakinger
app/client/cypress/e2e/Regression/Enterprise/**/* @ankitakinger
diff --git a/app/client/cypress/e2e/Regression/ClientSide/AdminSettings/Admin_settings_spec.js b/app/client/cypress/e2e/Regression/ClientSide/AdminSettings/Admin_settings_spec.js
index dcc7cf26ec..3f790297ea 100644
--- a/app/client/cypress/e2e/Regression/ClientSide/AdminSettings/Admin_settings_spec.js
+++ b/app/client/cypress/e2e/Regression/ClientSide/AdminSettings/Admin_settings_spec.js
@@ -71,7 +71,7 @@ describe("Admin settings page", function () {
it(
"airgap",
- "4. Should test that settings page tab redirects and google maps doesn't exist - airgap",
+ "4. Should test that settings page tab redirects and developer settings doesn't exist - airgap",
() => {
cy.visit("/applications", { timeout: 60000 });
if (!Cypress.env("AIRGAPPED")) {
diff --git a/app/client/cypress/support/Objects/CommonLocators.ts b/app/client/cypress/support/Objects/CommonLocators.ts
index 1166ddc450..a5b38616c6 100644
--- a/app/client/cypress/support/Objects/CommonLocators.ts
+++ b/app/client/cypress/support/Objects/CommonLocators.ts
@@ -252,11 +252,10 @@ export class CommonLocators {
_selectionCanvas = (canvasId: string) => `#div-selection-${canvasId}`;
_sqlKeyword = ".cm-m-sql.cm-keyword";
_appLeveltooltip = (toolTip: string) => `span:contains('${toolTip}')`;
- _appEditMenu = "[data-testid='t--application-edit-menu']";
- _appEditMenuBtn = "[data-testid='t--application-edit-menu-cta']";
- _appEditMenuSettings = "[data-testid='t--application-edit-menu-settings']";
- _appEditExportSettings =
- "[data-testid='t--application-edit-menu-export-application']";
+ _appEditMenu = "[data-testid='t--editor-menu']";
+ _appEditMenuBtn = "[data-testid='t--editor-menu-cta']";
+ _appEditMenuSettings = "[data-testid='t--editor-menu-settings']";
+ _appEditExportSettings = "[data-testid='t--editor-menu-export-application']";
_appThemeSettings = "#t--theme-settings-header";
_appChangeThemeBtn = ".t--change-theme-btn";
_appThemeCard = ".t--theme-card";
diff --git a/app/client/src/ce/reducers/entityReducers/index.ts b/app/client/src/ce/reducers/entityReducers/index.ts
index a19eac5818..ba3bd64c88 100644
--- a/app/client/src/ce/reducers/entityReducers/index.ts
+++ b/app/client/src/ce/reducers/entityReducers/index.ts
@@ -11,6 +11,9 @@ import pageListReducer from "reducers/entityReducers/pageListReducer";
import pluginsReducer from "reducers/entityReducers/pluginsReducer";
import autoHeightLayoutTreeReducer from "reducers/entityReducers/autoHeightReducers/autoHeightLayoutTreeReducer";
import canvasLevelsReducer from "reducers/entityReducers/autoHeightReducers/canvasLevelsReducer";
+
+/* Reducers which are integrated into the core system when registering a pluggable module
+ or done so by a module that is designed to be eventually pluggable */
import widgetPositionsReducer from "layoutSystems/anvil/integrations/reducers/widgetPositionsReducer";
export const entityReducerObject = {
diff --git a/app/client/src/pages/Applications/ApplicationCard.tsx b/app/client/src/pages/Applications/ApplicationCard.tsx
index 4061622bb8..06be17ec76 100644
--- a/app/client/src/pages/Applications/ApplicationCard.tsx
+++ b/app/client/src/pages/Applications/ApplicationCard.tsx
@@ -97,10 +97,10 @@ const IconScrollWrapper = styled.div`
}
`;
-type ModifiedMenuItemProps = MenuItemProps & {
+export interface ModifiedMenuItemProps extends MenuItemProps {
key?: string;
"data-testid"?: string;
-};
+}
const ContextMenuTrigger = styled(Button)<{ isHidden?: boolean }>`
${(props) => props.isHidden && "opacity: 0; visibility: hidden;"}
diff --git a/app/client/src/pages/Editor/EditorHeader.tsx b/app/client/src/pages/Editor/EditorHeader.tsx
index 0a2c8a2fca..c9933e3c66 100644
--- a/app/client/src/pages/Editor/EditorHeader.tsx
+++ b/app/client/src/pages/Editor/EditorHeader.tsx
@@ -6,7 +6,9 @@ import {
getApplicationLastDeployedAt,
getCurrentApplicationId,
getCurrentPageId,
+ getIsPageSaving,
getIsPublishingApplication,
+ getPageSavingError,
previewModeSelector,
} from "selectors/editorSelectors";
import {
@@ -25,7 +27,7 @@ import {
getIsErroredSavingAppName,
getCurrentApplication,
} from "@appsmith/selectors/applicationSelectors";
-import EditorAppName from "./EditorAppName";
+import EditorName from "./EditorName";
import { EditInteractionKind, SavingState } from "design-system-old";
import {
Button,
@@ -90,6 +92,7 @@ import { Omnibar } from "./commons/Omnibar";
import { EditorShareButton } from "./EditorShareButton";
import { HelperBarInHeader } from "./HelpBarInHeader";
import { AppsmithLink } from "./AppsmithLink";
+import { GetNavigationMenuData } from "./EditorName/NavigationMenuData";
const { cloudHosting } = getAppsmithConfigs();
@@ -111,6 +114,8 @@ export function EditorHeader() {
const isPublishing = useSelector(getIsPublishingApplication);
const pageId = useSelector(getCurrentPageId) as string;
const featureFlags = useSelector(selectFeatureFlags);
+ const isSaving = useSelector(getIsPageSaving);
+ const pageSaveError = useSelector(getPageSavingError);
const deployLink = useHref(viewerURL, { pageId });
const isAppSettingsPaneWithNavigationTabOpen = useSelector(
@@ -265,7 +270,7 @@ export function EditorHeader() {
placement="bottom"
>
- el.id === applicationId)
.length > 0
}
@@ -290,7 +297,7 @@ export function EditorHeader() {
/>
-
+
diff --git a/app/client/src/pages/Editor/EditorAppName/EditableAppName.tsx b/app/client/src/pages/Editor/EditorName/EditableName.tsx
similarity index 100%
rename from app/client/src/pages/Editor/EditorAppName/EditableAppName.tsx
rename to app/client/src/pages/Editor/EditorName/EditableName.tsx
diff --git a/app/client/src/pages/Editor/EditorAppName/NavigationMenu.tsx b/app/client/src/pages/Editor/EditorName/NavigationMenu.tsx
similarity index 100%
rename from app/client/src/pages/Editor/EditorAppName/NavigationMenu.tsx
rename to app/client/src/pages/Editor/EditorName/NavigationMenu.tsx
diff --git a/app/client/src/pages/Editor/EditorAppName/NavigationMenuData.ts b/app/client/src/pages/Editor/EditorName/NavigationMenuData.ts
similarity index 98%
rename from app/client/src/pages/Editor/EditorAppName/NavigationMenuData.ts
rename to app/client/src/pages/Editor/EditorName/NavigationMenuData.ts
index 3c46e4a258..38e1197b81 100644
--- a/app/client/src/pages/Editor/EditorAppName/NavigationMenuData.ts
+++ b/app/client/src/pages/Editor/EditorName/NavigationMenuData.ts
@@ -25,10 +25,10 @@ import { toast } from "design-system";
import type { ThemeProp } from "WidgetProvider/constants";
import { DISCORD_URL, DOCS_BASE_URL } from "constants/ThirdPartyConstants";
-type NavigationMenuDataProps = ThemeProp & {
+export interface NavigationMenuDataProps extends ThemeProp {
editMode: typeof noop;
setForkApplicationModalOpen: React.Dispatch>;
-};
+}
export const GetNavigationMenuData = ({
editMode,
diff --git a/app/client/src/pages/Editor/EditorAppName/NavigationMenuItem.tsx b/app/client/src/pages/Editor/EditorName/NavigationMenuItem.tsx
similarity index 93%
rename from app/client/src/pages/Editor/EditorAppName/NavigationMenuItem.tsx
rename to app/client/src/pages/Editor/EditorName/NavigationMenuItem.tsx
index b84ea2bb87..bf67000940 100644
--- a/app/client/src/pages/Editor/EditorAppName/NavigationMenuItem.tsx
+++ b/app/client/src/pages/Editor/EditorName/NavigationMenuItem.tsx
@@ -96,7 +96,7 @@ export function NavigationMenuItem({
case MenuTypes.MENU:
return (