This is an automated email from the ASF dual-hosted git repository.

github-merge-queue[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git


The following commit(s) were added to refs/heads/main by this push:
     new eac23d2101 feat(python-notebook-migration, config): add 
python-notebook-migration-enabled feature flag (#5254)
eac23d2101 is described below

commit eac23d2101569ddc7efb20a35c4d366fef32a789
Author: Ryan Zhang <[email protected]>
AuthorDate: Sat Jun 6 03:09:31 2026 -0700

    feat(python-notebook-migration, config): add 
python-notebook-migration-enabled feature flag (#5254)
    
    ### What changes were proposed in this PR?
    Introduces a feature flag `python-notebook-migration-enabled` (default
    `false`) that will gate the upcoming Python-notebook to Texera-workflow
    migration tool. No user-visible behavior changes, the flag controls
    features that don't exist on `main` yet.
    
    - `common/config/src/main/resources/gui.conf` — declare
    `gui.workflow.workspace.python-notebook-migration-enabled = false`, with
    env-var override
    `GUI_WORKFLOW_WORKSPACE_PYTHON_NOTEBOOK_MIGRATION_ENABLED`.
    -
    `common/config/src/main/scala/org/apache/texera/config/GuiConfig.scala`
    — Scala accessor for the new field.
    - `…/service/resource/ConfigResource.scala` — include the flag in the
    runtime config payload served to the frontend.
    - `frontend/src/app/common/type/gui-config.ts` — add the typed field on
    the frontend `GuiConfig` interface.
    - `frontend/src/app/workspace/component/menu/menu.component.ts` — expose
    a `pythonNotebookMigrationEnabled` getter for downstream migration-tool
    UI to consume.
    
    ### Any related issues, documentation, discussions?
    Closes #5253
    Parent issue #4301
    
    ### How was this PR tested?
      - Verified the new field appears in the `/api/config` payload
      - Verified `MenuComponent.pythonNotebookMigrationEnabled` resolves
      - No new UI in this PR, existing behavior is unchanged
    
    ### Was this PR authored or co-authored using generative AI tooling?
    Generated-by: Claude Code (Claude Opus 4.7)
---
 common/config/src/main/resources/gui.conf                             | 4 ++++
 common/config/src/main/scala/org/apache/texera/config/GuiConfig.scala | 2 ++
 .../scala/org/apache/texera/service/resource/ConfigResource.scala     | 1 +
 frontend/src/app/common/service/gui-config.service.mock.ts            | 1 +
 frontend/src/app/common/type/gui-config.ts                            | 1 +
 5 files changed, 9 insertions(+)

diff --git a/common/config/src/main/resources/gui.conf 
b/common/config/src/main/resources/gui.conf
index 302c9f77c0..a0673c9a3f 100644
--- a/common/config/src/main/resources/gui.conf
+++ b/common/config/src/main/resources/gui.conf
@@ -115,6 +115,10 @@ gui {
     # the limit of columns to be displayed in the result table
     limit-columns = 15
     limit-columns = ${?GUI_WORKFLOW_WORKSPACE_LIMIT_COLUMNS}
+
+    # whether AI python-notebook migration feature is enabled
+    python-notebook-migration-enabled = false
+    python-notebook-migration-enabled = 
${?GUI_WORKFLOW_WORKSPACE_PYTHON_NOTEBOOK_MIGRATION_ENABLED}
   }
 
   # whether to show the "Powered by Texera" attribution link in the sidebar
diff --git 
a/common/config/src/main/scala/org/apache/texera/config/GuiConfig.scala 
b/common/config/src/main/scala/org/apache/texera/config/GuiConfig.scala
index 32ce7ea7af..3064f0584c 100644
--- a/common/config/src/main/scala/org/apache/texera/config/GuiConfig.scala
+++ b/common/config/src/main/scala/org/apache/texera/config/GuiConfig.scala
@@ -75,4 +75,6 @@ object GuiConfig {
     conf.getInt("gui.workflow-workspace.limit-columns")
   val guiAttributionEnabled: Boolean =
     conf.getBoolean("gui.attribution-enabled")
+  val guiWorkflowWorkspacePythonNotebookMigrationEnabled: Boolean =
+    conf.getBoolean("gui.workflow-workspace.python-notebook-migration-enabled")
 }
diff --git 
a/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
 
b/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
index 1db52e2dc8..2cb951d01e 100644
--- 
a/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
+++ 
b/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
@@ -70,6 +70,7 @@ class ConfigResource {
       "activeTimeInMinutes" -> 
GuiConfig.guiWorkflowWorkspaceActiveTimeInMinutes,
       "copilotEnabled" -> GuiConfig.guiWorkflowWorkspaceCopilotEnabled,
       "limitColumns" -> GuiConfig.guiWorkflowWorkspaceLimitColumns,
+      "pythonNotebookMigrationEnabled" -> 
GuiConfig.guiWorkflowWorkspacePythonNotebookMigrationEnabled,
       // flags from the auth.conf if needed
       "expirationTimeInMinutes" -> AuthConfig.jwtExpirationMinutes
     )
diff --git a/frontend/src/app/common/service/gui-config.service.mock.ts 
b/frontend/src/app/common/service/gui-config.service.mock.ts
index 9165c19b9c..0324b10eb6 100644
--- a/frontend/src/app/common/service/gui-config.service.mock.ts
+++ b/frontend/src/app/common/service/gui-config.service.mock.ts
@@ -53,6 +53,7 @@ export class MockGuiConfigService {
     copilotEnabled: false,
     limitColumns: 15,
     attributionEnabled: false,
+    pythonNotebookMigrationEnabled: false,
   };
 
   get env(): GuiConfig {
diff --git a/frontend/src/app/common/type/gui-config.ts 
b/frontend/src/app/common/type/gui-config.ts
index 63531ee91b..abdb4067b2 100644
--- a/frontend/src/app/common/type/gui-config.ts
+++ b/frontend/src/app/common/type/gui-config.ts
@@ -44,6 +44,7 @@ export interface GuiConfig {
   copilotEnabled: boolean;
   limitColumns: number;
   attributionEnabled: boolean;
+  pythonNotebookMigrationEnabled: boolean;
 }
 
 export interface SidebarTabs {

Reply via email to