Virgil
895f9da069
docs: align mining code with AX naming
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 08:15:43 +00:00
Virgil
ede8eb4314
ax(mining): standardize cli helper names
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 08:05:50 +00:00
Virgil
f3709678cc
Apply AX naming and comment cleanup
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 08:01:20 +00:00
Virgil
6964d7ce5a
Refine AX naming in mining CLI
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 07:54:34 +00:00
Virgil
6864e52ed4
ax(mining): clarify CLI paths and usage examples
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 07:20:56 +00:00
Virgil
9ed6c33c42
ax(mining): standardize command and repository names
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-authored-by: Virgil <virgil@lethean.io>
2026-04-04 07:08:47 +00:00
Virgil
0671c60a1a
Align CLI naming with AX conventions
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 06:49:40 +00:00
Virgil
53b2156216
AX: clarify CLI and service naming
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 06:44:32 +00:00
Virgil
0893b0ef9e
AX: clarify mining cache names and examples
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 06:14:19 +00:00
Virgil
262987c10a
AX cleanup for mining service names
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:53:48 +00:00
Virgil
85cfb18ddd
AX: clarify cache paths and remote command examples
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:48:01 +00:00
Virgil
ba0d61d4bc
Align CLI manager naming with AX
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:43:20 +00:00
Virgil
a675d16ed6
AX: clarify mining service names and comments
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:39:20 +00:00
Virgil
68c826a3d8
Align mining AX naming and comments
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:33:08 +00:00
Virgil
c7f86cf5b9
Apply AX naming and comment cleanup
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:27:28 +00:00
Virgil
6838f26d99
Improve AX naming and path docs
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:17:54 +00:00
Virgil
aee96536cb
refactor(ax): modernize command docs
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:13:27 +00:00
Virgil
976ff0141c
refactor(ax): tighten remaining naming and docs
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-04 05:08:34 +00:00
Virgil
9102b25f55
Apply AX naming and comment cleanup
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 04:16:13 +00:00
Virgil
e3986fb064
Refine AX naming and usage comments
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 04:00:30 +00:00
Claude
95c602104f
ax(batch): rename abbreviated locals in source files
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
ns→nodeService, c→xmrigConfig, m→manager, k→minerKey, s→stringValue,
l→linesParam, ip→clientAddress, r→character, mgr→manager across
pkg/mining and cmd/mining source files.
Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 18:36:02 +01:00
Claude
140f038f37
chore: migrate module path from github.com to forge.lthn.ai
...
E2E Tests / E2E Tests (push) Failing after 1m23s
Tests / Go Tests (push) Failing after 39s
Desktop Release / Build linux (push) Failing after 46s
Release / Test (push) Failing after 2s
Tests / C++ Tests (push) Failing after 1m12s
Release / Release (push) Has been cancelled
Desktop Release / Build darwin (push) Has been cancelled
Desktop Release / Build windows (push) Has been cancelled
Desktop Release / Create Release (push) Has been cancelled
Move module declaration and all internal imports from
github.com/Snider/Mining to forge.lthn.ai/Snider/Mining. Also updates
Borg, Enchantrix, and Poindexter dependency paths to forge.lthn.ai.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:39:01 +00:00
dependabot[bot]
51ff365815
build(deps): Bump @modelcontextprotocol/sdk and @angular/cli
...
Bumps [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk ) to 1.24.0 and updates ancestor dependency [@angular/cli](https://github.com/angular/angular-cli ). These dependencies need to be updated together.
Updates `@modelcontextprotocol/sdk` from 1.17.3 to 1.24.0
- [Release notes](https://github.com/modelcontextprotocol/typescript-sdk/releases )
- [Commits](https://github.com/modelcontextprotocol/typescript-sdk/compare/1.17.3...1.24.0 )
Updates `@angular/cli` from 20.3.8 to 20.3.13
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular-cli/compare/20.3.8...20.3.13 )
---
updated-dependencies:
- dependency-name: "@modelcontextprotocol/sdk"
dependency-version: 1.24.0
dependency-type: indirect
- dependency-name: "@angular/cli"
dependency-version: 20.3.13
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:07:04 +00:00
dependabot[bot]
6ef566b059
build(deps): Bump body-parser in /cmd/desktop/mining-desktop/frontend
...
Bumps [body-parser](https://github.com/expressjs/body-parser ) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/expressjs/body-parser/releases )
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md )
- [Commits](https://github.com/expressjs/body-parser/compare/v2.2.0...v2.2.1 )
---
updated-dependencies:
- dependency-name: body-parser
dependency-version: 2.2.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:06:32 +00:00
dependabot[bot]
655665a45c
build(deps): Bump github.com/quic-go/quic-go
...
Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go ) from 0.54.0 to 0.57.0.
- [Release notes](https://github.com/quic-go/quic-go/releases )
- [Commits](https://github.com/quic-go/quic-go/compare/v0.54.0...v0.57.0 )
---
updated-dependencies:
- dependency-name: github.com/quic-go/quic-go
dependency-version: 0.57.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:06:32 +00:00
dependabot[bot]
e6016088ec
chore(deps): Bump @angular/compiler
...
Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler ) from 20.3.9 to 20.3.16.
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v20.3.16/packages/compiler )
---
updated-dependencies:
- dependency-name: "@angular/compiler"
dependency-version: 20.3.16
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:06:32 +00:00
dependabot[bot]
813af77e4b
build(deps): Bump @angular/common
...
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common ) from 20.3.9 to 20.3.14.
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/20.3.14/packages/common )
---
updated-dependencies:
- dependency-name: "@angular/common"
dependency-version: 20.3.14
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:06:32 +00:00
dependabot[bot]
bd2e8b20f8
build(deps): Bump golang.org/x/crypto in /cmd/desktop/mining-desktop
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.44.0 to 0.45.0.
- [Commits](https://github.com/golang/crypto/compare/v0.44.0...v0.45.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.45.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:06:32 +00:00
dependabot[bot]
0da69ad713
chore(deps): Bump @angular/core in /cmd/desktop/mining-desktop/frontend
...
Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core ) from 20.3.9 to 20.3.16.
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v20.3.16/packages/core )
---
updated-dependencies:
- dependency-name: "@angular/core"
dependency-version: 20.3.16
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-02-02 06:06:31 +00:00
copilot-swe-agent[bot]
c0ca900938
Merge branch 'dependabot/npm_and_yarn/cmd/desktop/mining-desktop/frontend/multi-b625c48170' into copilot/combine-39-prs-into-one
2026-02-02 06:05:17 +00:00
dependabot[bot]
4a1d8058a5
chore(deps): Bump tar and @angular/cli
...
Bumps [tar](https://github.com/isaacs/node-tar ) to 7.5.7 and updates ancestor dependency [@angular/cli](https://github.com/angular/angular-cli ). These dependencies need to be updated together.
Updates `tar` from 7.5.2 to 7.5.7
- [Release notes](https://github.com/isaacs/node-tar/releases )
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md )
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.2...v7.5.7 )
Updates `@angular/cli` from 20.3.8 to 20.3.15
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular-cli/compare/20.3.8...v20.3.15 )
---
updated-dependencies:
- dependency-name: tar
dependency-version: 7.5.7
dependency-type: indirect
- dependency-name: "@angular/cli"
dependency-version: 20.3.15
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 21:34:31 +00:00
dependabot[bot]
52f3d98906
chore(deps): Bump lodash in /cmd/desktop/mining-desktop/frontend
...
Bumps [lodash](https://github.com/lodash/lodash ) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases )
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23 )
---
updated-dependencies:
- dependency-name: lodash
dependency-version: 4.17.23
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-01-23 23:29:17 +00:00
snider
d99dd77449
feat: Add API configuration service and enhance security validation in commands
2025-12-31 17:46:25 +00:00
snider
4072bdaf0d
fix: Address 16 security findings from parallel code review
...
Critical fixes (6):
- CRIT-001/002: Add safeKeyPrefix() to prevent panic on short public keys
- CRIT-003/004: Add sync.Once pattern for thread-safe singleton initialization
- CRIT-005: Harden console ANSI parser with length limits and stricter validation
- CRIT-006: Add client-side input validation for profile creation
High priority fixes (10):
- HIGH-001: Add secondary timeout in TTMiner to prevent goroutine leak
- HIGH-002: Verify atomic flag prevents timeout middleware race
- HIGH-004: Add LimitReader (100MB) to prevent decompression bombs
- HIGH-005: Add Lines parameter validation (max 10000) in worker
- HIGH-006: Add TLS 1.2+ config with secure cipher suites
- HIGH-007: Add pool URL format and wallet length validation
- HIGH-008: Add SIGHUP handling and force cleanup on Stop() failure
- HIGH-009: Add WebSocket message size limit and event type validation
- HIGH-010: Refactor to use takeUntil(destroy$) for observable cleanup
- HIGH-011: Add sanitizeErrorDetails() with debug mode control
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 17:44:49 +00:00
snider
34f860309f
refactor: Add reliability fixes and architecture improvements
...
Reliability fixes:
- Fix HTTP response body drainage in xmrig, ttminer, miner
- Fix database init race condition (nil before close)
- Fix empty minerType bug in P2P StartMinerPayload
- Add context timeout to InsertHashratePoint (5s default)
Architecture improvements:
- Extract HashrateStore interface with DefaultStore/NopStore
- Create ServiceContainer for centralized initialization
- Extract protocol response handler (ValidateResponse, ParseResponse)
- Create generic FileRepository[T] with atomic writes
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:43:46 +00:00
snider
95ae55e4fa
feat: Add rate limiter with cleanup and custom error types
...
Rate Limiter:
- Extract rate limiting to pkg/mining/ratelimiter.go with proper lifecycle
- Add Stop() method to gracefully shutdown cleanup goroutine
- Add RateLimiter.Middleware() for Gin integration
- Add ClientCount() for monitoring
- Fix goroutine leak in previous inline implementation
Custom Errors:
- Add pkg/mining/errors.go with MiningError type
- Define error codes: MINER_NOT_FOUND, INSTALL_FAILED, TIMEOUT, etc.
- Add predefined error constructors (ErrMinerNotFound, ErrStartFailed, etc.)
- Support error chaining with WithCause, WithDetails, WithSuggestion
- Include HTTP status codes and retry policies
Service:
- Add Service.Stop() method for graceful cleanup
- Update CLI commands to use context.Background() for Manager methods
Tests:
- Add comprehensive tests for RateLimiter (token bucket, multi-IP, refill)
- Add comprehensive tests for MiningError (codes, status, retryable)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 10:56:26 +00:00
snider
757526e60e
feat: Add WebSocket events, simulation mode, and redesigned Miners page
...
WebSocket Real-Time Events:
- Add EventHub for broadcasting miner events to connected clients
- New event types: miner.starting/started/stopping/stopped/stats/error
- WebSocket endpoint at /ws/events with auto-reconnect support
- Angular WebSocketService with RxJS event streams and fallback to polling
Simulation Mode (miner-ctrl simulate):
- SimulatedMiner generates realistic hashrate data for UI development
- Supports presets: cpu-low, cpu-medium, cpu-high, gpu-ethash, gpu-kawpow
- Features: variance, sine-wave fluctuation, 30s ramp-up, 98% share rate
- XMRig-compatible stats format for full UI compatibility
- NewManagerForSimulation() skips autostart of real miners
Miners Page Redesign:
- Featured cards for installed/recommended miners with gradient styling
- "Installed" (green) and "Recommended" (gold) ribbon badges
- Placeholder cards for 8 planned miners with "Coming Soon" badges
- Algorithm badges, GitHub links, and license info for each miner
- Planned miners: T-Rex, lolMiner, Rigel, BzMiner, SRBMiner, TeamRedMiner, GMiner, NBMiner
Chart Improvements:
- Hybrid data approach: live in-memory data while active, database historical when inactive
- Smoother transitions between data sources
Documentation:
- Updated DEVELOPMENT.md with simulation mode usage
- Updated ARCHITECTURE.md with WebSocket, simulation, and supported miners table
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 07:11:41 +00:00
snider
1351dc7562
fix: Address race conditions and network blocking issues
...
Critical fixes:
- Release mutex before HTTP calls in GetStats() to prevent blocking
- Fix m.cmd race between Stop() and Wait() goroutine by capturing locally
- Add context support to GetStats() for proper request cancellation
High priority fixes:
- Add existence check in collectMinerStats() before operating on miners
- Add mutex-protected httpClient getter/setter for thread-safe test mocking
Changes:
- Miner interface now requires context.Context for GetStats()
- Stats HTTP requests timeout after 5 seconds (was 30s client default)
- All callers updated to pass context (service uses request context)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 01:55:24 +00:00
snider
f2afdeeb82
fix: Address medium severity code quality issues
...
- Fix deprecated strings.Title usage with golang.org/x/text/cases
- Replace log.Fatalf in service startup with channel-based error handling
- Add graceful SIGTERM before SIGKILL in Stop() for proper cleanup
- Add mutex protection for LogBuffer access in GetLogs()
- Add instance name sanitization with regex to prevent injection
- Add error logging in updateInstallationCache for failed operations
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 01:15:35 +00:00
snider
006dd3712e
fix: Address critical security and concurrency issues
...
Security fixes:
- Remove hardcoded wallet address from CLI defaults (start.go, serve.go)
Pool and wallet are now required flags or must be provided explicitly
- Change file permissions from 0644 to 0600 for sensitive config files
Affects: xmrig config, profiles, settings, config cache
- Fix path traversal in untar() - now returns error instead of silently skipping
Concurrency fix:
- Fix race condition in GetStats() - was using RLock while writing m.FullStats
Changed to Lock/Unlock in both xmrig_stats.go and ttminer_stats.go
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 00:50:06 +00:00
snider
69376b886f
feat: Rebrand xmrig to miner and vendor XMRig ecosystem
...
Complete rebranding of all components:
- Core miner: xmrig -> miner (binary, version.h, CMakeLists.txt)
- Proxy: xmrig-proxy -> miner-proxy
- CUDA plugin: xmrig-cuda -> miner-cuda
- Heatmap: xmrig-nonces-heatmap -> miner-nonces-heatmap
- Go CLI wrapper: miner-cli -> miner-ctrl
Vendored XMRig ecosystem into miner/ directory:
- miner/core - XMRig CPU/GPU miner
- miner/proxy - Stratum proxy
- miner/cuda - NVIDIA CUDA plugin
- miner/heatmap - Nonce visualization tool
- miner/config - Configuration UI
- miner/deps - Pre-built dependencies
Updated dev fee to use project wallet with opt-out (kMinimumDonateLevel=0)
Updated branding to Lethean (domain, copyright, version 0.1.0)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 19:43:02 +00:00
snider
ab47bae0a3
feat: Add CPU throttling, settings manager, and multi-miner tests
...
- Add CPUMaxThreadsHint, priority, pause-on-active/battery to XMRig config
- Create SettingsManager for app preferences (window state, miner defaults)
- Add settings API to desktop app service (GetSettings, SaveWindowState, etc)
- Create throttle_test.go with multi-miner CPU usage verification tests
- Create settings_manager_test.go with concurrent access tests
- Desktop app now remembers window size between launches
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 16:35:02 +00:00
snider
80d2c56047
feat: Add Wails desktop app with cross-platform GitHub Actions build
...
Create native desktop application using Wails v3 with Angular frontend.
The app wraps the mining CLI backend and exposes functionality via
TypeScript bindings for system info, miner control, profiles, and stats.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 01:55:14 +00:00
snider
e0c9c92244
feat: Implement logging functionality for miners with log buffer and retrieval endpoint
2025-12-29 22:10:45 +00:00
snider
9a781ae3f0
feat: Add multi-node P2P mining management system
...
Implement secure peer-to-peer communication between Mining CLI instances
for remote control of mining rigs. Uses Borg library for encryption
(SMSG, STMF, TIM) and Poindexter for KD-tree based peer selection.
Features:
- Node identity management with X25519 keypairs
- Peer registry with multi-factor optimization (ping/hops/geo/score)
- WebSocket transport with SMSG encryption
- Controller/Worker architecture for remote operations
- TIM/STIM encrypted bundles for profile/miner deployment
- CLI commands: node, peer, remote
- REST API endpoints for node/peer/remote operations
- Docker support for P2P testing with multiple nodes
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 19:49:33 +00:00
Snider
0d412e6faa
feat: Add setup wizard and profile management components with styling
2025-12-10 22:17:38 +00:00
Snider
816f860b73
feat: Enhance mining configuration management and API documentation
2025-12-07 16:26:18 +00:00
Snider
2576d4bc1b
feat: Update server configuration and add XMRig miner management functionality
2025-12-07 15:14:30 +00:00
Snider
6ac80d211a
Add logOutput field to control stdout/stderr logging and update miner management
2025-11-09 03:10:55 +00:00
Snider
bda2416816
adds miner-cli, a miner management and lifecycle tool
2025-11-09 01:02:31 +00:00