Mining/site-docs/features/console.md
snider 3057701ac1 feat: Add SQLite persistence, enhanced dashboard UI, and comprehensive E2E tests
- Add SQLite database package for hashrate history persistence with configurable retention
- Enhance dashboard with responsive stats bar, improved chart component, and worker selector
- Add terminal modal component for console output viewing
- Implement comprehensive E2E test suite with page objects pattern
- Add history API endpoints for historical data queries
- Update worker message handling with proper registration
- Add new UI pages structure with layouts and components
- Update Docker configuration for Go 1.24
- Add PostCSS configuration for Tailwind CSS processing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 00:03:30 +00:00

3 KiB

Console & Logs

The Console page provides live access to miner output with ANSI color support and interactive input.

Console

Features

Live Output

  • Real-time streaming - Miner output appears as it happens
  • ANSI color support - Full color rendering for miner output
  • Auto-scroll - Automatically scrolls to latest output
  • Base64 transport - Preserves special characters and escape codes

Worker Selection

Use the dropdown to select which miner's output to view:

  • Lists all running miners
  • Defaults to the first running miner
  • Switching miners loads their log history

Command Input

The input field at the bottom allows sending commands to the miner's stdin:

> h

XMRig Commands

Key Command
h Print hashrate
p Pause mining
r Resume mining
s Print results/shares
c Print connection info

Press Enter to send the command.

Auto-scroll Toggle

Toggle auto-scroll to:

  • On - Automatically scroll to new output
  • Off - Stay at current position for reading history

Clear Button

Click Clear to empty the console display. This only clears the UI; the backend still retains the full log.

Color Support

The console renders ANSI escape codes as HTML colors:

Color Usage
Green Success messages, accepted shares
Red Errors, rejected shares
Cyan Values, hashrates
Yellow Warnings
Magenta Special messages
White Normal text

Example Output

[2024-01-15 10:30:45] speed 10s/60s/15m 1234.5 1230.2 1228.8 H/s max 1250.1 H/s
[2024-01-15 10:30:50] accepted (1/0) diff 10000 (238 ms)

Log Buffer

Each miner maintains a circular log buffer:

  • Size: Last 1000 lines
  • Persistence: Cleared when miner stops
  • Encoding: Base64 to preserve special characters

Implementation Details

Backend

Logs are captured via:

  1. Miner stdout/stderr is piped to a LogBuffer
  2. Lines are base64 encoded for JSON transport
  3. Retrieved via GET /miners/{name}/logs

Frontend

The Angular component:

  1. Fetches logs via HTTP
  2. Decodes base64 to text
  3. Converts ANSI escape codes to HTML spans
  4. Renders with appropriate CSS colors

Stdin

Commands are sent via:

  1. POST /miners/{name}/stdin with {"input": "h"}
  2. Backend writes to miner's stdin pipe
  3. Response appears in log output

API Endpoints

GET  /api/v1/mining/miners/{name}/logs   # Get log output (base64 encoded)
POST /api/v1/mining/miners/{name}/stdin  # Send stdin input

Example: Get Logs

curl http://localhost:9090/api/v1/mining/miners/xmrig-123/logs

Response:

[
  "W1hNUmlnXSBzcGVlZCAxMHMvNjBzLzE1bSAxMjM0LjUgMTIzMC4yIDEyMjguOCBIL3M=",
  "W1hNUmlnXSBhY2NlcHRlZCAoMS8wKSBkaWZmIDEwMDAw"
]

Example: Send Command

curl -X POST http://localhost:9090/api/v1/mining/miners/xmrig-123/stdin \
  -H "Content-Type: application/json" \
  -d '{"input": "h"}'

Response:

{"status": "sent", "input": "h"}