view_settings.py:
- Network Access section: LAN vs localhost toggle, port input
- _get_lan_ip: detects first 192.168.x.x address, ignores PPPoE/WAN
- _write_server_config: writes [server] block to config.toml
- _write_config: now preserves existing [server] block when saving theme
- Custom hostname input with step-by-step hosts file instructions
for Windows (C:\Windows\System32\drivers\etc\hosts) and macOS (/etc/hosts)
- iOS/Android note directing to IP address or static DHCP reservation
- _get_local_sha: reads .git/HEAD directly, no git CLI required
- _get_remote_info: fetches latest commit SHA from GitHub API, 1hr cache
- _get_recent_commits: fetches last 10 commits for changelog, 1hr cache
- check_for_update_banner: call from app.py to show top-of-page info
banner when local SHA differs from latest GitHub commit
- Version and Changelog section in Settings: local vs remote SHA,
update warning with git pull instructions, Check again button,
last 10 commits as collapsible expanders with you-are-here marker
Live MT5 EAs page (view_ftp_tracker.py):
- FTP-based multi-account tracker replacing view_mt5_tracker.py
- Account configuration with add/remove, FTP folder validation, Demo/Personal/Prop types
- Prop account fields: profit target %, max loss %, daily loss % with EA hard stop banner
- Account summary cards: recovery factor, loss streak, stagnation days, today P&L, prop progress bars
- Calendar view: month/week/year, Mon-Fri only, weekly total column, $ or % toggle
- Open positions table parsed from MT5 HTML Open Positions section
- Symbol correlation heatmap (collapsible)
- Trade analysis section with full stats, equity/drawdown/daily P&L, DOW/hour, monthly table
- Analysis modes: Overall, By Account, By Symbol, By Algo, By Day of Week
- Dynamic combined balance field auto-updates from selected accounts
- Auto-refresh polling with session state timestamp guard
- Report date extracted from MT5 HTML header (Date: field)
- Drawdown $ / % toggle with spline smoothing
mt5_parser.py:
- calc_stats(df, deposit=0.0) — deposit-aware balance drawdown matching MT5 Balance Drawdown Maximal
- max_drawdown_pct and peak_equity added to calc_stats return
- peak_at_dd uses .loc[] fix (IndexError on filtered DataFrames)
- parse_open_positions() — parses Open Positions section from MT5 account HTML
- extract_strategy() — filters sl/tp/so close-reason comments, maps nan to Manual
ftp_sync_cli.py:
- New CLI tool for FTP connection testing and cache population
MT5Tools_FTP_Setup_Guide.docx:
- FileZilla Server setup, MT5 publisher config, CLI verification, troubleshooting
- incorrectly managed in/out trades skipping trades when multiple open entries on the same strategy.
- fixed card color backgrounds in light theme
- fixed strategy filters in portfolio builder
Trade Analysis:
- Add toggleable equity curve overlays: Account total, By Strategy,
By Symbol, By Day of Week — checkboxes above each chart
- Fix all chart backgrounds to transparent (inherit page theme)
- Fix grid and font colours to work on both dark and light backgrounds
Settings page:
- Full theme control: Dark / Light / Custom radio with Apply button
- Custom mode: colour pickers for accent, page bg, sidebar bg, text,
font selector and base dark/light toggle
- Preview swatches before applying
- Discard / Reset to Dark button
- Text size: Normal / Large (+2px) / Extra Large (+4px) via CSS injection
- inject_theme_css() helper for app.py to apply font size on all pages
- Theme written to .streamlit/config.toml on apply