Replaced `os.path.exists()` + `os.path.getmtime()` with a single `os.stat()` call in `scripts/web_dashboard.py` to reduce syscalls by 50% for cache checks. Also pre-calculated static file paths at module level to avoid redundant `abspath` and `join` calls on every request.
Impact:
- Reduces filesystem operations per request.
- Improves code cleanliness by centralizing path constants.
- Verified with existing tests and manual curl check.
- Update `AiAssistant.mqh` to support `Ai_AskJules` using Bearer token authentication.
- Add `ENUM_AI_PROVIDER` to select between Gemini and Jules API.
- Update `SMC_TrendBreakout_MTF_EA.mq5` with new inputs for Jules API (Key, URL, Model).
- Rename input group "Gemini AI" to "AI Filter" and use `AiProvider` input.
- Ensure API keys are not hardcoded in source.
- Added `scripts/market_research.py` to analyze market data using Gemini.
- Added `scripts/upgrade_repo.py` to suggest code upgrades based on research.
- Added `scripts/schedule_research.py` to orchestrate periodic research.
- Updated `config/startup_config.json` to include the scheduler.
- Added `schedule` and `google-generativeai` to `requirements.txt`.
Added a new 'Locations' section to docs/USER_NOTES.md containing:
- The user-provided Google Maps link (Battambang, Cambodia).
- The verified geolocation of the ZOLO Bridge server (Phnom Penh, Cambodia).
- Added `--monitor` flag to `scripts/startup.sh`.
- Fixed circular nameref warning in `scripts/startup.sh`.
- Updated `startup.sh` to pass the monitor flag to `startup_orchestrator.py`.
- Verified system startup and web dashboard accessibility.
- Created `mt5/MQL5/Include/ManagePositions.mqh` with fixed logic (added missing `||` operator).
- Created `.vscode/extensions.json` with recommended extensions.
- Verified file creation and syntax fix.
- Create `mt5/MQL5/Include/AiAssistant.mqh` for shared AI logic.
- Modularize Gemini API calls, prompt construction, and response parsing.
- Update `SMC_TrendBreakout_MTF_EA.mq5` to use `AiAssistant.mqh`.
- Enhance AI prompt with RSI and ATR context for better decision making.
- Add `RSIPeriod` input parameter.
- Add include guards to `AiAssistant.mqh` and `ZoloBridge.mqh`.
- Created `docs/INDEX.md` to categorize and index all repository documentation.
- Created `docs/USER_NOTES.md` as a dedicated place for user notes and external references.
- Updated `README.md` to link to the new documentation index and notes file.
- Preserved existing documentation structure while making it more navigable.
- Created `mt5/MQL5/Include/ZoloBridge.mqh` for shared, secure (HTTPS) bridge logic with proper JSON sanitization.
- Created `ExpertMACD_Enhanced.mq5`, `ExpertMAMA_Enhanced.mq5`, and `ExpertMAPSAR_Enhanced.mq5` using standard library and ZOLO bridge.
- Refactored `EXNESS_GenX_Trader.mq5` and `SMC_TrendBreakout_MTF_EA.mq5` to use `ZoloBridge.mqh` and updated default URL to `https://genx-fx.com/api/signal`.
- Updated `scripts/deploy_docker_hub.sh` and `scripts/update_vps.sh` to support `DOCKER_USERNAME` and `DOCKER_PASSWORD` environment variables.
- Added `scripts/fix_profiles.py` to copy defaults to empty profile directories.
- Added `SECRETS_TEMPLATE.md` for credential management guidance.
- Updated EA link properties to Forge URL.
- Copied `dashboard/index.html` to `./index.html` to support "Deploy from root" configuration.
- Copied `dashboard/index.html` to `docs/index.html` to support "Deploy from docs" configuration.
- Verified dashboard renders correctly via Playwright.
This commit copies `dashboard/index.html` to `index.html` (root) and `docs/index.html` to ensure that the GitHub Pages site loads correctly regardless of the source configuration (Root, Docs, or Custom Workflow). It also adds `.nojekyll` to prevent Jekyll processing issues.
Updated VERIFICATION.md to reflect that the Docker build and run were successful in the current environment. The system builds the image and runs the automation scripts correctly, skipping MT5 Terminal as expected on Linux.