From edd92ec85bf61e3759c74d96acd1e19b35c3d6f7 Mon Sep 17 00:00:00 2001 From: ajaysi Date: Tue, 31 Mar 2026 18:45:52 +0530 Subject: [PATCH] Deprecate legacy feature flags, use ALWRITY_ENABLED_FEATURES only - Remove fallback to ALWRITY_FEATURE_PROFILE, ALWRITY_ROUTER_PROFILE - Primary env var is now ALWRITY_ENABLED_FEATURES (backend) - Primary env var is REACT_APP_ENABLED_FEATURES (frontend) - Add deprecation comments to all get_enabled_features() functions - Update demoMode.ts with clear deprecation notes Usage: ALWRITY_ENABLED_FEATURES=podcast # Podcast only ALWRITY_ENABLED_FEATURES=all # All features (default) --- backend/alwrity_utils/router_manager.py | 13 ++++++------- backend/app.py | 13 ++++++------- backend/start_alwrity_backend.py | 15 +++++++-------- frontend/src/utils/demoMode.ts | 18 +++++++++++------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/backend/alwrity_utils/router_manager.py b/backend/alwrity_utils/router_manager.py index eee799ce..876262f6 100644 --- a/backend/alwrity_utils/router_manager.py +++ b/backend/alwrity_utils/router_manager.py @@ -83,17 +83,16 @@ class RouterManager: @staticmethod def get_enabled_features() -> set: - """Get enabled features from environment variable. + """Get enabled features from ALWRITY_ENABLED_FEATURES env var. - ALWRITY_ENABLED_FEATURES can be: + Values: - "all" - enable all features (default) - - comma-separated list: "podcast,blog-writer,youtube" + - comma-separated: "podcast,blog-writer,youtube" - single feature: "podcast" + + DEPRECATED: ALWRITY_FEATURE_PROFILE, ALWRITY_ROUTER_PROFILE, ALWRITY_FEATURE_TO_ENABLE """ - env_value = os.getenv( - "ALWRITY_ENABLED_FEATURES", - os.getenv("ALWRITY_FEATURE_PROFILE", os.getenv("ALWRITY_ROUTER_PROFILE", "all")) - ).strip().lower() + env_value = os.getenv("ALWRITY_ENABLED_FEATURES", "all").strip().lower() if not env_value or env_value == "all": return {"all"} diff --git a/backend/app.py b/backend/app.py index f863996f..b61a57da 100644 --- a/backend/app.py +++ b/backend/app.py @@ -60,17 +60,16 @@ def _env_flag_enabled(*env_names: str) -> bool: def get_enabled_features() -> set: - """Get enabled features from environment variable. + """Get enabled features from ALWRITY_ENABLED_FEATURES env var. - ALWRITY_ENABLED_FEATURES can be: + Values: - "all" - enable all features (default) - - comma-separated list: "podcast,core" + - comma-separated: "podcast,core" - single feature: "podcast" + + DEPRECATED: ALWRITY_FEATURE_PROFILE, ALWRITY_ROUTER_PROFILE, ALWRITY_FEATURE_TO_ENABLE """ - env_value = os.getenv( - "ALWRITY_ENABLED_FEATURES", - os.getenv("ALWRITY_FEATURE_PROFILE", os.getenv("ALWRITY_ROUTER_PROFILE", "all")) - ).strip().lower() + env_value = os.getenv("ALWRITY_ENABLED_FEATURES", "all").strip().lower() if not env_value or env_value == "all": return {"all"} diff --git a/backend/start_alwrity_backend.py b/backend/start_alwrity_backend.py index 254c4b41..95c67e5a 100644 --- a/backend/start_alwrity_backend.py +++ b/backend/start_alwrity_backend.py @@ -27,17 +27,16 @@ LINGUISTIC_REQUIRED_FEATURES = {"content_planning", "strategy_copilot", "faceboo def get_enabled_features() -> set: - """Get enabled features from environment variable. + """Get enabled features from ALWRITY_ENABLED_FEATURES env var. - ALWRITY_ENABLED_FEATURES can be: + Values: - "all" - enable all features (default) - - comma-separated list: "podcast,blog-writer,youtube" + - comma-separated: "podcast,blog-writer,youtube" - single feature: "podcast" + + DEPRECATED: ALWRITY_FEATURE_PROFILE, ALWRITY_ROUTER_PROFILE, ALWRITY_FEATURE_TO_ENABLE """ - env_value = os.getenv( - "ALWRITY_ENABLED_FEATURES", - os.getenv("ALWRITY_FEATURE_PROFILE", os.getenv("ALWRITY_ROUTER_PROFILE", "all")) - ).strip().lower() + env_value = os.getenv("ALWRITY_ENABLED_FEATURES", "all").strip().lower() if not env_value or env_value == "all": return {"all"} @@ -46,7 +45,7 @@ def get_enabled_features() -> set: def get_active_profile() -> str: - """Legacy function - returns primary profile for backwards compatibility.""" + """Legacy function - use get_enabled_features() instead.""" enabled = get_enabled_features() if "all" in enabled: return "all" diff --git a/frontend/src/utils/demoMode.ts b/frontend/src/utils/demoMode.ts index 730096ac..0c5dfc65 100644 --- a/frontend/src/utils/demoMode.ts +++ b/frontend/src/utils/demoMode.ts @@ -1,22 +1,26 @@ /** * Consolidated feature mode detection utilities. * - * Uses ALWRITY_ENABLED_FEATURES (backend) / REACT_APP_ENABLED_FEATURES (frontend) - * Format: "all" or comma-separated features: "podcast,core" + * Primary: REACT_APP_ENABLED_FEATURES (format: "all" or "podcast,core") + * + * DEPRECATED (fallback order): + * - REACT_APP_APP_MODE + * - REACT_APP_DEMO_MODE + * - REACT_APP_PODCAST_ONLY_DEMO_MODE */ const ENABLED_FEATURES_STORAGE_KEYS = [ + 'enabled_features', // Primary 'app_mode', - 'enabled_features', 'demo_mode', 'podcast_only_demo_mode', ]; const ENABLED_FEATURES_ENV_KEYS = [ - 'REACT_APP_ENABLED_FEATURES', - 'REACT_APP_APP_MODE', - 'REACT_APP_DEMO_MODE', - 'REACT_APP_PODCAST_ONLY_DEMO_MODE', + 'REACT_APP_ENABLED_FEATURES', // Primary - use this! + 'REACT_APP_APP_MODE', // DEPRECATED + 'REACT_APP_DEMO_MODE', // DEPRECATED + 'REACT_APP_PODCAST_ONLY_DEMO_MODE', // DEPRECATED ]; /**