EVE Frontier's universe is vast—over 7,000 star systems spread across dozens of regions. As you explore, mine, fight, and trade, you naturally accumulate spatial history: which systems you've visited, how many times, and when.
Before the Visited Systems Tracking feature, that history lived only in your memory. Now, EF-Map remembers for you—visualizing your exploration footprint directly on the 3D star map, tracking both all-time stats and individual play sessions.
This post explains how Visited Systems works, how it integrates with the EF Helper overlay, and how players are using it to plan efficient routes and measure exploration progress.
The Problem: Forgotten Systems and Redundant Travel
Scenario 1: Exploration Surveying
You're mapping wormhole chains, scanning down signatures in dozens of systems. After 3 hours, you can't remember: "Did I already scan System X? Or was that yesterday?"
Without tracking, you either:
- Re-scan redundantly (wasting time)
 - Keep a manual spreadsheet (tedious, error-prone)
 - Guess and miss systems (incomplete survey)
 
Scenario 2: Mining Routes
Your corporation has a 20-system mining circuit. You want to visit each system once per session, extracting ore then moving on. But after 15 jumps, you lose track: "Have I been to System Y this session?"
Without tracking:
- You might revisit depleted systems (wasting time)
 - You might skip profitable ones (missed income)
 
Scenario 3: Territory Familiarization
You join a new alliance and need to learn their 12-system home territory. You want to visit each system at least once to memorize the gate layout.
Without tracking:
- No way to confirm you've visited them all
 - No visual indicator of which systems are familiar
 
The Solution: Visited Systems Tracking
EF-Map now tracks two types of visit history:
- All-Time Tracking: Persistent record of every system you've ever visited (toggle on/off)
 - Session Tracking: Temporary record for a single play session (start/stop manually)
 
Both integrate with the EF Helper desktop app, which monitors your EVE Frontier client's log files to detect system jumps automatically—no manual logging required.
How It Works: Log File Monitoring
EF Helper: The Bridge Between Game and Map
The EF Helper is a Windows desktop app that:
- Monitors EVE Frontier's chat and combat log files
 - Detects when you jump to a new system (via log entry patterns)
 - Records the system ID and name
 - Exposes visit data via a local HTTP API
 
The web app polls this API every 2 seconds (when tracking visualization is enabled) and displays visit counts as orange halos around stars.
Automatic Detection: No Manual Logging
When you jump to a new system in-game, EVE Frontier writes a log entry:
[2025-10-23 14:32:15] Player entered system: Jita (30000142)
EF Helper's log watcher tails the file, parses this line, and increments the visit counter:
void LogWatcher::onLogEntry(const std::string& line) {
  std::regex systemPattern(R"(Player entered system: (.+) \((\d+)\))");
  std::smatch match;
  
  if (std::regex_search(line, match, systemPattern)) {
    std::string systemName = match[1].str();
    std::string systemId = match[2].str();
    
    // Record visit in all-time tracker (if enabled)
    if (sessionTracker_->isAllTimeTrackingEnabled()) {
      sessionTracker_->recordSystemVisitAllTime(systemId, systemName);
    }
    
    // Record visit in active session (if exists)
    if (sessionTracker_->hasActiveSession()) {
      sessionTracker_->recordSystemVisitSession(systemId, systemName);
    }
  }
}
Result: Completely hands-free tracking—just play the game, and the helper records your path.
All-Time Tracking: Persistent Exploration History
Enable All-Time Tracking
In the web app's Helper panel:
- Ensure EF Helper is running and connected
 - Toggle "Enable all-time tracking"
 - The helper creates 
%LocalAppData%\EFOverlay\data\visited_systems.json 
From this point forward, every system you visit is recorded.
Data Structure
{
  "version": 1,
  "tracking_enabled": true,
  "last_updated_ms": 1730000000000,
  "systems": {
    "30000142": {
      "name": "Jita",
      "visits": 47
    },
    "30000144": {
      "name": "Perimeter",
      "visits": 23
    }
  }
}
Fields:
version: Schema version (for future migrations)tracking_enabled: Whether tracking is currently activelast_updated_ms: Timestamp of last visit (UNIX ms)systems: Map of system ID → visit data
Visualization: Orange Halos
When you enable "Show visited systems on map" in the web app, stars you've visited render with an orange outer ring:
 ●  ← Unvisited system (default blue)
 ◉  ← Visited system (orange halo)
Hover over a visited system to see:
Jita (30000142)
Visited: 47 times
This gives you instant spatial awareness—at a glance, you know which regions you've explored.
Reset All-Time Data
If you want to start fresh (e.g., new character, new tracking period):
- Click "Reset All-Time" in the Helper panel
 - Confirm the prompt
 - All-time visit data is cleared (JSON file emptied)
 
Sessions remain unaffected—they're separate.
Session Tracking: Temporary Play Session Records
What is a Session?
A session is a bounded time period you manually start and stop. Use sessions to track:
- Daily mining circuits ("Did I visit all 20 mining systems today?")
 - Exploration surveys ("Have I scanned every system in this wormhole chain?")
 - Patrol routes ("Did I check all alliance territory this patrol?")
 
Sessions are independent of all-time tracking—you can run a session with all-time tracking disabled.
Start a Session
In the Helper panel:
- Click "Start Session"
 - The helper creates 
session_YYYYMMDD_HHMMSS.json(e.g.,session_20251023_143022.json) - Visit counter starts at 0
 
Session data structure:
{
  "version": 1,
  "session_id": "session_20251023_143022",
  "start_time_ms": 1729712202000,
  "end_time_ms": 0,
  "active": true,
  "systems": {
    "30000142": {
      "name": "Jita",
      "visits": 2
    }
  }
}
Stop a Session
When you're done:
- Click "Stop Session"
 - The helper sets 
active: falseand writesend_time_ms - Session file is saved permanently
 
You can later view historical sessions via the session dropdown.
View Session History
The Helper panel shows a dropdown of all sessions (newest first):
📊 Session History
┌──────────────────────────────────────┐
│ Active Session (2 systems visited)  │
│ 2025-10-23 14:30 (15 systems)       │
│ 2025-10-22 09:15 (8 systems)        │
│ 2025-10-21 20:45 (12 systems)       │
│ ...                                  │
└──────────────────────────────────────┘
Select a session to visualize only those visits on the map (orange halos disappear for unvisited systems).
Session Use Case: Mining Circuit Verification
Goal: Visit 20 specific mining systems exactly once per session.
Workflow:
- Start a new session
 - Visit each mining system in your route
 - Check the map—systems you've visited show orange halos
 - At the end, stop the session
 - Review session history: "20 systems visited" ✅
 
If you see 21 systems, you revisited one accidentally. If 19, you missed one.
Integration with Follow Mode
What is Follow Mode?
Follow Mode is another EF Helper feature that syncs your current in-game location to the web app in real-time. When enabled:
- The map auto-centers on your current system
 - Your current system is highlighted with a green player marker
 
How Follow Mode + Visited Systems Work Together
When both features are enabled:
- You jump to a new system in-game
 - EF Helper detects the jump (via log file)
 - Visit count increments
 - Follow Mode broadcasts your new location
 - The map auto-centers on the new system
 - Orange halo appears (new visit recorded)
 
Result: A live exploration tracker—the map visually traces your path through space as you play.
Privacy and Data Storage
Local-Only Storage
All visit data is stored locally on your PC:
%LocalAppData%\EFOverlay\data\
  ├── visited_systems.json       (all-time data)
  ├── session_20251023_143022.json
  ├── session_20251022_091500.json
  └── ...
Zero server upload. The web app polls the helper's localhost API (http://127.0.0.1:38765/session/visited-systems) but never sends visit data to EF-Map servers.
Anonymous Aggregates Only
EF-Map's usage telemetry tracks only:
- "Visited systems tracking enabled" (counter increment)
 - "Session started" (counter increment)
 - "Session stopped" (counter increment)
 
We never log:
- Which systems you visited
 - How many times
 - When you visited them
 
Your exploration history is yours alone.
Performance Considerations
Polling Frequency
The web app polls the helper API every 2 seconds when visualization is enabled:
useEffect(() => {
  if (!showVisitedSystems || !helperConnected) return;
  
  const interval = setInterval(async () => {
    const response = await fetch('http://127.0.0.1:38765/session/visited-systems?type=all');
    if (response.ok) {
      const data = await response.json();
      setVisitedSystemIds(new Set(Object.keys(data.systems)));
    }
  }, 2000);
  
  return () => clearInterval(interval);
}, [showVisitedSystems, helperConnected]);
Overhead: <1ms per poll. The helper serves cached JSON from memory—no disk I/O on each request.
Rendering Overhead
Orange halos are rendered as instanced meshes (same technique as the starfield). Adding halos to 500 visited systems adds ~2ms to frame time—negligible.
API Endpoints (Helper)
EF Helper exposes these HTTP endpoints:
GET /session/visited-systems?type=all
Returns all-time tracking data.
Response:
{
  "version": 1,
  "tracking_enabled": true,
  "last_updated_ms": 1730000000000,
  "systems": {
    "30000142": { "name": "Jita", "visits": 47 }
  }
}
GET /session/visited-systems?type=active-session
Returns currently active session (404 if none).
Response:
{
  "version": 1,
  "session_id": "session_20251023_143022",
  "start_time_ms": 1729712202000,
  "active": true,
  "systems": {
    "30000142": { "name": "Jita", "visits": 2 }
  }
}
GET /session/visited-systems?type=session&session_id=X
Returns specific session by ID.
POST /session/visited-systems/toggle
Toggles all-time tracking on/off.
POST /session/visited-systems/reset-all
Clears all-time visit data.
POST /session/start-session
Starts a new session.
Response:
{
  "session_id": "session_20251023_143022",
  "start_time_ms": 1729712202000
}
POST /session/stop-session
Stops the active session.
Future Enhancements
Planned Features
- Heatmaps: Visualize visit frequency with color gradients (red = high, blue = low)
 - Export to CSV: Download visit history for external analysis
 - Visit timestamps: See when you visited each system (currently only counts)
 - Region summaries: "You've visited 45/143 systems in Amarr region (31%)"
 - Streak tracking: "5-day exploration streak—visited at least 10 new systems daily"
 
Community Requests
- Multi-character support: Track visits per character (currently all visits combined)
 - Shared tracking: Export session data as JSON for corp/alliance aggregation
 - Route replay: Visualize your path chronologically (animate jumps in order)
 
Troubleshooting
"Tracking not updating"
Cause: Helper not running or not connected.
Fix:
- Check Helper panel—should show "Connected"
 - If disconnected, launch 
ef-overlay-helper.exe - Enable "Show visited systems on map" to trigger polling
 
"Orange halos don't appear"
Cause: Visualization toggle is off.
Fix: In the Helper panel, enable "Show visited systems on map".
"Session dropdown is empty"
Cause: No sessions have been started yet.
Fix: Click "Start Session", visit a few systems, then stop the session. It will appear in the dropdown.
"Visit count is wrong"
Cause: Log file parsing missed a jump (rare).
Fix: Manually trigger a re-sync by toggling tracking off/on. If persistent, check helper logs (%LocalAppData%\EFOverlay\logs\helper.log) for parse errors.
Real-World Use Cases
Mining Corporation "Ore Haulers Inc."
Goal: Rotate through 25 mining systems, visiting each exactly once per day.
Workflow:
- Start session at beginning of shift
 - Mine in each system for 15 minutes
 - Check map—orange halos show progress
 - At end of day, stop session
 - Review: "25 systems visited" ✅
 
Result: Eliminated double-visits (wasted time) and missed systems (lost income).
Explorer "Captain Wanderer"
Goal: Scan all wormhole systems in a J-space chain before it collapses.
Workflow:
- Start session
 - Scan down each system, record signatures
 - Use visited halos to avoid re-scanning
 - When chain collapses, stop session
 - Export session JSON for corp intel sharing
 
Result: 30% faster survey (no redundant scans).
Alliance Patrol "Border Guard"
Goal: Patrol all 18 border systems every 4 hours.
Workflow:
- Start session at patrol start
 - Visit each border system, check local
 - Orange halos mark checked systems
 - Stop session, confirm "18 systems visited"
 
Result: Zero missed systems—full coverage every patrol.
How to Get Started
Step 1: Install EF Helper
Download from https://ef-map.com (Helper panel → Install button) or Microsoft Store.
Step 2: Launch Helper
Run ef-overlay-helper.exe. It will appear in the system tray.
Step 3: Connect in Web App
Open EF-Map → Helper panel → should show "Connected".
Step 4: Enable Tracking
Toggle "Enable all-time tracking" and "Show visited systems on map".
Step 5: Play EVE Frontier
Jump to a system. Within 2-4 seconds, an orange halo should appear.
You're now tracking your exploration!
Related Posts
- User Overlay: Real-Time In-Game Navigation HUD - How the EF Helper overlay works
 - Building the Helper Bridge: Native Desktop Integration for EVE Frontier - Architecture of the helper ↔ web app connection
 - Follow Mode: Real-Time Location Sync Between Game and Map - Companion feature that auto-centers the map on your current system
 
Visited Systems Tracking transforms EF-Map from a static reference tool into a live exploration companion—remembering where you've been so you can focus on where you're going next. Try it on your next mining run or exploration survey!