Skip to content

Commit b875799

Browse files
author
CalorieApp Maintainer
committed
chore: isolate deferred Web3 browser & CalorieDB behind feature flags
1 parent e176c2a commit b875799

6 files changed

Lines changed: 87 additions & 6 deletions

File tree

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,9 @@ If you disagree with any clause, do not use, clone, build, or distribute this so
7474
| Social Assets || Dynamic image generator (edge‑to‑edge typography) |
7575
| Accessibility | 🚧 | Contrast audit scheduled |
7676
| Performance Profiling | 🚧 | Planned instrumentation |
77-
| CalorieDB Sync | 🔜 | Deferred indexing & storage phase |
77+
| CalorieDB Sync | 🔜 | Deferred (isolated) |
7878
| WalletConnect | 🔜 | Phase 1 design queued |
79+
| Web3 Browser | 🔜 | Deferred (flagged) |
7980

8081
Legend: ✅ Complete · ⏳ Partial · 🚧 In Progress · 🔜 Planned
8182

@@ -156,6 +157,15 @@ Robust connectivity with automatic failover:
156157
Lightweight in-memory caching for select XRPL requests (e.g. `ServerInfo`) reduces redundant network calls and stabilizes performance under intermittent connectivity. Cache entries automatically expire after a short TTL.
157158

158159
## 🚀 Getting Started (Pre-Release Notice)
160+
## ⏳ Deferred Components (Isolated)
161+
162+
The following planned features are isolated under feature flags and excluded from the active beta build:
163+
164+
- **Web3 Browser Screen** (`ENABLE_WEB3_BROWSER=False`): Future in-app browsing / WalletConnect surface.
165+
- **CalorieDB Sync Layer** (`ENABLE_CALORIE_DB=False`): Planned decentralized product scan indexing (IPFS + BigchainDB).
166+
167+
They reside in `src/_deferred/` and can be re-enabled via flags once scoped for a release milestone.
168+
159169

160170
Runtime/build commands have been deliberately removed (v1.1.2) to prevent distribution of unfinished work. Request internal access: info@calorietoken.net.
161171

src/_deferred/Web3BrowserScreen.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from kivy.uix.screenmanager import Screen
2+
from src.core.feature_flags import ENABLE_WEB3_BROWSER
3+
from src.utils.ui_feedback import info as ui_info
4+
5+
6+
class Web3BrowserScreen(Screen): # DEFERRED
7+
"""Deferred Web3 browser screen.
8+
9+
Currently disabled (ENABLE_WEB3_BROWSER=False). When enabled this will
10+
provide in-app browsing / WalletConnect session handling.
11+
"""
12+
13+
def open_url(self, url: str): # Guarded no-op when disabled
14+
if not ENABLE_WEB3_BROWSER:
15+
ui_info("Web3 browser feature deferred")
16+
return
17+
ui_info("Web3 browser not yet implemented")

src/_deferred/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"""Deferred / experimental modules.
2+
3+
Modules in this package are excluded from active beta functionality.
4+
They may be incomplete, un-audited, and subject to removal.
5+
"""

src/_deferred/caloriedb.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"""Deferred CalorieDB integration layer. DEFERRED.
2+
3+
Original prototype handled decentralized storage (IPFS + BigchainDB).
4+
Extracted from active code path until indexing & sync phase is scheduled.
5+
"""
6+
7+
from typing import Dict, Any
8+
from src.core.feature_flags import ENABLE_CALORIE_DB
9+
from src.utils.ui_feedback import info as ui_info
10+
11+
12+
def record_scan(product: Dict[str, Any], barcode: str): # DEFERRED stub
13+
if not ENABLE_CALORIE_DB:
14+
ui_info("CalorieDB sync deferred")
15+
return {"status": "deferred", "barcode": barcode}
16+
# Future: implement full decentralized ingest
17+
ui_info("CalorieDB ingest not implemented")
18+
return {"status": "pending", "barcode": barcode}
19+
20+
__all__ = ["record_scan"]

src/core/app.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
from src.screens.NFTMintScreen import NFTMintScreen
3737
from src.screens.SendXRPScreen import SendXRPScreen
3838
from src.screens.SettingsScreen import SettingsScreen
39-
from src.screens.Web3BrowserScreen import Web3BrowserScreen
39+
from src.core.feature_flags import ENABLE_WEB3_BROWSER
40+
if ENABLE_WEB3_BROWSER:
41+
from src._deferred.Web3BrowserScreen import Web3BrowserScreen # type: ignore
4042
from src.screens.WebViewScreen import WebViewScreen
4143
from src.utils.wallet_connect.xaman_connector import XamanConnector
4244
from src.utils.responsive import init_responsive, get_size_class, scale_dp, scale_font, ResponsiveDebugOverlay
@@ -246,7 +248,9 @@ def build(self):
246248
self.barcode_scan_screen = BarcodeScanScreen(name="barcode_scan_screen")
247249
self.camera_scan_screen = CameraScanScreen(name="camera_scan_screen")
248250
self.settings_screen = SettingsScreen(name="settings_screen")
249-
self.web3_browser_screen = Web3BrowserScreen(name="web3_browser_screen")
251+
if ENABLE_WEB3_BROWSER:
252+
self.web3_browser_screen = Web3BrowserScreen(name="web3_browser_screen")
253+
self.manager.add_widget(self.web3_browser_screen)
250254
self.webview_screen = WebViewScreen(name="webview_screen")
251255

252256
# Add all screens to manager
@@ -276,7 +280,9 @@ def build(self):
276280
self.manager.add_widget(self.barcode_scan_screen)
277281
self.manager.add_widget(self.camera_scan_screen)
278282
self.manager.add_widget(self.settings_screen)
279-
self.manager.add_widget(self.web3_browser_screen)
283+
if ENABLE_WEB3_BROWSER:
284+
# Already added above when created
285+
pass
280286
self.manager.add_widget(self.webview_screen)
281287

282288
# Determine initial screen based on wallet data - optimized for speed
@@ -415,8 +421,11 @@ def navigate_to_settings(self):
415421
self.manager.current = "settings_screen"
416422

417423
def navigate_to_web3_browser(self):
418-
"""Navigate to Web3 Browser screen"""
419-
self.manager.current = "web3_browser_screen"
424+
"""Navigate to Web3 Browser screen (deferred)"""
425+
if ENABLE_WEB3_BROWSER:
426+
self.manager.current = "web3_browser_screen"
427+
else:
428+
print("Web3 browser feature deferred (flag disabled)")
420429

421430
def navigate_to_webview(self):
422431
"""Navigate to in-app WebView screen (feature flagged)"""

src/core/feature_flags.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"""Centralized feature flags for deferred/experimental components.
2+
3+
Flags gate visibility and import of modules that are not part of the
4+
current beta production surface. Each flag MUST default to False.
5+
6+
Contributing:
7+
- Add new flags here for any feature not ready for release.
8+
- Guard screen registration, menu items, and actions using these flags.
9+
- Do not perform side effects at import time.
10+
"""
11+
12+
# Deferred screens / modules
13+
ENABLE_WEB3_BROWSER = False # Web3BrowserScreen (Android WebView pending)
14+
ENABLE_CALORIE_DB = False # CalorieDB decentralized scan recording pipeline
15+
16+
def is_enabled(name: str) -> bool:
17+
return {
18+
"web3_browser": ENABLE_WEB3_BROWSER,
19+
"calorie_db": ENABLE_CALORIE_DB,
20+
}.get(name, False)

0 commit comments

Comments
 (0)