Skip to content

Releases: thawkins/rCandle

rCandle v0.1.0-alpha - First Alpha Release

05 Oct 21:11

Choose a tag to compare

rCandle v0.1.0-alpha Release Notes

Release Date: January 5, 2025
Tag: v0.1.0-alpha
Commit: 64b4e91
Status: ✅ Alpha Release - Hardware Communication Working


🎉 First Alpha Release

This is the first alpha release of rCandle, a modern Rust reimplementation of the Candle CNC controller application. This release marks a major milestone with fully functional hardware communication and core CNC control features.

✨ What's New in v0.1.0-alpha

Major Features

Hardware Communication ✅

  • Serial Port Support: Connect to GRBL controllers via USB/FTDI serial ports
  • GRBL Protocol: Full implementation of GRBL command formatting and queueing
  • Real-time Control: Background tasks for command processing and status polling
  • Verified Working: Tested with laser engraver on /dev/ttyACM0 (Linux)

G-Code Management ✅

  • Parser: Full lexical and syntactic analysis with validation
  • Preprocessor: Arc interpolation, feedrate management, coordinate transformation
  • Editor: Syntax highlighting, line numbers, search functionality
  • File Operations: Load, save, and validate G-Code files

3D Visualization ✅

  • Modern Graphics: WGPU-based rendering (Vulkan/Metal/DX12)
  • Interactive Camera: Orbit controls (rotate, pan, zoom)
  • Toolpath Display: Real-time line-based rendering
  • View Presets: 7 predefined camera angles (Isometric, Top, Front, Right, Left, Back, Bottom)

Machine Control ✅

  • Home Command: $H - Initiate homing cycles
  • Jog Controls: Manual positioning for all axes (X, Y, Z, A, B, C)
  • Zero Setting: Work coordinate system zeroing
  • Program Execution: Run/Pause/Stop/Reset controls with progress tracking

User Interface ✅

  • Modern Design: Clean, responsive multi-panel layout
  • Dark/Light Themes: Toggle between themes with dynamic font sizing
  • Settings Dialog: Comprehensive configuration (5 categories)
  • Console: Command history with color-coded output
  • Keyboard Shortcuts: Extensive hotkey support

Advanced Features ✅

  • Scripting Engine: Rhai-based automation with comprehensive API
  • User Commands: Customizable command buttons with default library
  • Override Controls: Real-time feed rate, spindle speed, and rapid overrides
  • Settings Persistence: JSON-based configuration management

🔧 Critical Fixes in This Release

Fix 1: Tokio Runtime Integration

Issue: Application crashed with "no reactor running" error when connecting to devices.

Solution: Added Tokio runtime initialization in main() with enter guard, enabling async operations from the UI thread.

Impact: Eliminates panic on connection attempts, enables all async functionality.

Files Modified: src/main.rs (+3 lines)

Documentation: TOKIO_RUNTIME_FIX.md

Fix 2: Connection Manager Persistence

Issue: Connection appeared successful but commands would fail with "Not connected to controller".

Root Cause: ConnectionManager was created and connected but immediately dropped when async task completed, never stored for later use.

Solution: Implemented "pending connection manager" pattern:

  • Shared slot for manager transfer from async task to UI thread
  • UI update loop retrieves and stores manager
  • Commands now use stored manager's send_command() method

Impact: Commands can now reach hardware, all machine control functions work.

Files Modified: src/ui/app.rs (~65 lines)

Documentation: CONNECTION_MANAGER_FIX.md

Fix 3: Enhanced Debug Logging

Issue: Difficult to diagnose command flow issues.

Solution: Added comprehensive logging throughout command pipeline:

  • Connection manager operations
  • Queue enqueue/dequeue operations
  • Serial port writes
  • State transitions

Impact: Easy troubleshooting of any communication issues.

Files Modified: src/connection/manager.rs, src/grbl/queue.rs (~30 lines)

Documentation: DEBUG_COMMAND_SENDING.md

📊 Statistics

  • Lines of Code: ~12,249 lines of Rust
  • Test Coverage: 133 unit tests (100% passing)
  • Compilation: Clean (0 errors, 1 expected warning)
  • Documentation: 88KB user docs + 216KB specifications
  • Code Quality: 0 warnings (down from 24 in Phase 8)

✅ Verified Working

Hardware

  • ✅ Serial port connection to GRBL devices
  • ✅ Tested with laser engraver on /dev/ttyACM0 (Linux)

Commands

  • ✅ Home command ($H) - Homing cycles work
  • ✅ Jog commands ($J=...) - All axis movements work
  • ✅ Zero commands (G10 L20...) - Coordinate zeroing works

UI

  • ✅ Connection status indicators
  • ✅ Control panel interactions
  • ✅ Menu system and dialogs
  • ✅ Keyboard shortcuts
  • ✅ Theme switching
  • ✅ Settings persistence

Core Systems

  • ✅ G-Code parsing and validation
  • ✅ 3D toolpath visualization
  • ✅ Command queue management
  • ✅ Background task processing
  • ✅ State management
  • ✅ Logging system

⚠️ Known Limitations

Not Yet Implemented

  • Response Display: GRBL responses parsed but not shown in UI
  • Error Feedback: Limited error messages displayed to user
  • Reconnection: Manual reconnection required if connection lost
  • Queue Status: Pending commands not visible in UI

Platform Testing

  • ✅ Linux (tested and working)
  • ⏸️ Windows (needs testing)
  • ⏸️ macOS (needs testing)

Advanced Features (Planned)

  • ⏸️ Height mapping for surface compensation
  • ⏸️ Tool management and change sequences
  • ⏸️ Probing operations
  • ⏸️ Response monitoring in UI

📖 Documentation

User Documentation

  • docs/USER_GUIDE.md - Complete usage instructions (13KB)
  • docs/KEYBOARD_SHORTCUTS.md - Shortcut reference (7KB)
  • docs/TROUBLESHOOTING.md - Problem-solving guide (13KB)
  • docs/INSTALLATION.md - Platform-specific setup (13KB)
  • docs/FAQ.md - 50+ common questions (12KB)

Developer Documentation

  • .specify/SPECIFICATION.md - Complete requirements (25KB)
  • .specify/ARCHITECTURE.md - Technical architecture (24KB)
  • .specify/ROADMAP.md - 20-week development plan (24KB)
  • CONNECTION_MANAGER_FIX.md - Manager storage fix
  • TOKIO_RUNTIME_FIX.md - Runtime context fix
  • DEBUG_COMMAND_SENDING.md - Debugging guide
  • REPOSITORY_ANALYSIS.md - Repository analysis (23KB)
  • FIXES_SUMMARY.md - Overall summary (10KB)

🚀 Installation

Prerequisites

  • Rust 1.75 or later
  • WGPU-compatible graphics drivers
  • GRBL-compatible CNC controller

Linux

# Install dependencies
sudo apt update
sudo apt install build-essential pkg-config libudev-dev

# Clone repository
git clone https://github.com/thawkins/rCandle.git
cd rCandle

# Checkout alpha release
git checkout v0.1.0-alpha

# Build and run
cargo build --release
cargo run --release

Windows

# Prerequisites: Visual Studio 2019+ with C++ build tools

# Clone and build
git clone https://github.com/thawkins/rCandle.git
cd rCandle
git checkout v0.1.0-alpha
cargo build --release
cargo run --release

macOS

# Install Xcode command line tools
xcode-select --install

# Clone and build
git clone https://github.com/thawkins/rCandle.git
cd rCandle
git checkout v0.1.0-alpha
cargo build --release
cargo run --release

🎯 Quick Start

  1. Launch Application

    cargo run --release
  2. Connect to CNC

    • Select serial port (e.g., /dev/ttyACM0, COM3)
    • Set baud rate (typically 115200)
    • Click "Connect"
  3. Control Machine

    • Click "Home" to home the machine
    • Use jog controls to move axes
    • Load G-Code files
    • Execute programs
  4. Advanced Features

    • Customize view with presets
    • Adjust overrides in real-time
    • Create user commands
    • Write automation scripts

🐛 Troubleshooting

Connection Issues

If unable to connect:

  1. Check serial port name is correct
  2. Verify GRBL device is powered on
  3. Ensure no other software is using the port
  4. Check USB cable connection
  5. Try different baud rate if needed

GRBL Alarm State

If GRBL shows alarm:

  1. Send $X command to unlock
  2. Home the machine with $H
  3. Check for mechanical issues

Commands Not Working

If commands don't execute:

  1. Run with logging: RUST_LOG=info cargo run
  2. Check logs for error messages
  3. Verify GRBL is responding (try ? status query)
  4. See DEBUG_COMMAND_SENDING.md for detailed diagnostics

🤝 Contributing

Contributions are welcome! This project is in alpha and needs:

Testing Needed

  • Windows platform testing
  • macOS platform testing
  • Different GRBL hardware variants
  • Large G-Code files
  • Long-running programs
  • Error condition handling

Features Wanted

  • Response display in UI
  • Better error messages
  • Automatic reconnection
  • Height mapping implementation
  • Tool change support
  • Probing operations

How to Contribute

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

See .specify/ROADMAP.md for planned features.

📝 License

GNU General Public License v3.0

This is the same license as the original Candle application, ensuring compatibility and continued open-source development.

🙏 Credits

  • Original Candle: Denvi/Candle by Denis Ravilevich Hayrullin
  • GRBL: gnea/grbl
  • Rust Community: For excellent crates and documentation

📞 Support

🔮 What's Next

v0.2.0 (Planned)

  • Response monitoring in UI
  • Enhanced error messages
  • Automatic reconnection
  • Cross-platform testing completion
  • Performance optimizations

v0.3.0 (Future)

  • Height mapping for surface compensation
  • Tool library and management
  • Probing operations
  • Advanced measurement tools

📈 Development Stats

  • Development Time: ~20 weeks (Pha...
Read more