Releases: thawkins/rCandle
rCandle v0.1.0-alpha - First Alpha Release
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 fixTOKIO_RUNTIME_FIX.md- Runtime context fixDEBUG_COMMAND_SENDING.md- Debugging guideREPOSITORY_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 --releaseWindows
# 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 --releasemacOS
# 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
-
Launch Application
cargo run --release
-
Connect to CNC
- Select serial port (e.g.,
/dev/ttyACM0,COM3) - Set baud rate (typically 115200)
- Click "Connect"
- Select serial port (e.g.,
-
Control Machine
- Click "Home" to home the machine
- Use jog controls to move axes
- Load G-Code files
- Execute programs
-
Advanced Features
- Customize view with presets
- Adjust overrides in real-time
- Create user commands
- Write automation scripts
🐛 Troubleshooting
Connection Issues
If unable to connect:
- Check serial port name is correct
- Verify GRBL device is powered on
- Ensure no other software is using the port
- Check USB cable connection
- Try different baud rate if needed
GRBL Alarm State
If GRBL shows alarm:
- Send
$Xcommand to unlock - Home the machine with
$H - Check for mechanical issues
Commands Not Working
If commands don't execute:
- Run with logging:
RUST_LOG=info cargo run - Check logs for error messages
- Verify GRBL is responding (try
?status query) - See
DEBUG_COMMAND_SENDING.mdfor 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
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- 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
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: See
docs/directory
🔮 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...