# Changelog All notable changes to this project will be documented in this file. ## [1.7.6] - 2026-01-28 ### Changed - **Documentation Overhaul**: Consolidated and reorganized the entire documentation suite. Migrated to Sphinx with the Furo theme and added support for PDF generation. - **Language Standardization**: All documentation and comments have been reviewed and standardized to English. - **Project Structure**: Cleaned up the `docs/` directory, removing redundant and overlapping files in favor of a structured Sphinx hierarchy. ## [1.7.5] - 2026-01-27 ### Added - **Standalone Simulator Integration**: Switched the standard validation and testing workflow to use the `caux-sim` standalone simulator. This provides higher protocol faithfulness and better parity with real hardware. - **Experimental Test Pool**: Created `tests/experimental/` to host tests requiring specialized synchronization with external simulators. ### Changed - **Async Driver Architecture**: Refactored `GOTO` and `SYNC` operations into non-blocking background tasks. The driver now remains fully responsive to INDI commands (like `ABORT`) during movement. - **Improved Abort Logic**: The `TELESCOPE_ABORT_MOTION` command now immediately cancels any active background movement tasks for instant response. - **Test Robustness**: Updated integration tests with increased timeouts and better state transition awareness to accommodate standalone simulator latency. ### Fixed - **Race Conditions**: Resolved a race condition where GoTo status could blink between `Busy` and `Idle` due to task completion timing. - **Sync Point Management**: Fixed a coordinate capturing bug in the `SYNC` command by ensuring RA/Dec are cached at the exact moment the command is received. ## [1.7.0] - 2026-01-20 ### Changed - **Configuration Format**: Migrated from YAML (`config.yaml`) to TOML (`config.default.toml`, `config.toml`). This utilizes the standard library `tomllib` in Python 3.11+, reducing external dependencies. - **Logging System**: Replaced all `print()` statements with the standard `logging` module. Logs are now properly routed to `stderr` with appropriate levels (INFO, ERROR, DEBUG), ensuring compliance with INDI protocol requirements. - **Import Structure**: Cleaned up internal imports in `celestron_indi_driver.py` and other modules, removing defensive `try...except` blocks in favor of standard relative imports. - **Script Updates**: Updated all validation scripts (`hit_validation.py`, `ppt_accuracy.py`, `pec_measure.py`) to support the new TOML configuration and hierarchical loading. ### Fixed - **Test Stability**: Resolved import errors in the test suite caused by circular or incorrect relative imports. - **Dependency Bloat**: Removed `pyyaml` and `types-PyYAML` from project dependencies. ## [1.6.5] - 2026-01-12 ### Added - **Type Hints**: Added comprehensive type annotations to all core modules and simulator components for better maintainability and robustness. - **GitHub Actions CI**: Set up a professional CI pipeline verifying tests and type correctness on Python 3.11, 3.12, and 3.13. - **Adaptive Alignment Model**: The mathematical model now scales with the number of alignment points (SVD for 1-2 pts, 4-parameter for 3-5 pts, 6-parameter for 6+ pts). - **Sub-step Rate Estimation**: Maintains floating-point precision during velocity calculation to eliminate quantization drift. - **Simulation Backdoor**: Added `SIM_GET_SKY_POSITION` (0xFF) for ground-truth verification in simulation. ### Fixed - **Non-Sidereal Tracking**: Fixed a bug where Moon and Planet tracking used stale target coordinates. The loop now correctly re-calculates target positions at each tick. - **Iterative GoTo**: Corrected the two-stage slew implementation (Fast + Precision) and fixed coordinate synchronization during Sync operations. - **CI Compatibility**: Removed hardcoded `venv` references in test suites, enabling execution in containerized environments. - **Driver Robustness**: Fixed property inheritance and added safety checks for hardware communicator connection state. - **Tracking Stability**: Switched to a 30s differentiation window, matching the reference driver's high-inertia approach. - **Documentation**: Updated `DEVELOPMENT_PLAN.md` and `GEMINI.md` to reflect the latest project status. Added MathJax and MyST dollarmath extensions for professional LaTeX rendering. ## [1.6.4] - 2026-01-09 ### Added - **Real-World Validation Script**: New standalone routine `scripts/real_world_validation.py` for testing 4-star local alignment and tracking accuracy under simulated mechanical imperfections (Periodic Error, Cone Error, Backlash). ### Fixed - **Sub-step Precision in Rate Estimation**: Refined guide rate conversion to minimize truncation errors by maintaining floating-point precision during velocity calculation before rounding to 24-bit AUX commands. ## [1.6.3] - 2026-01-09 ### Added - **High-Accuracy Dead Reckoning**: Optimized tracking loop for sub-arcsecond stability. - **Improved Differentiation**: Increased sampling interval ($dt=5.0s$) to reduce quantization noise in velocity estimation. ### Fixed - **Rate Quantization**: Reduced tracking drift by an order of magnitude through smoother numerical derivatives. ## [1.6.2] - 2026-01-09 ### Added - **Automated Tracking Accuracy Test**: New test suite `tests/test_tracking_accuracy.py` that programmatically measures drift, jitter, and pointing error. - **Target Locking**: Implemented `current_target_ra/dec` to prevent feedback drift during sidereal tracking. ### Fixed - **Iterative GoTo Refinement**: Improved absolute pointing accuracy by implementing a two-stage slew (Fast Approach + Precision Centering). - **GoTo Jumping**: Eliminated redundant slew iterations and refined anti-backlash suppression during the fast phase. - **Tracking Stability**: Improved tracking rate derivative calculation by reducing the sample interval ($dt=0.1s$) and using a consistent time base. - **Web Console Precision**: Increased telemetry display precision for velocities to 4 decimal places, enabling visualization of sidereal rates. ## [1.6.1] - 2026-01-08 ### Added - **Visual Digital Twin Finalization**: Completed the integration of Three.js visualization with real-time driver telemetry. - **Enhanced Sky View**: Verified FOV representation against bright stars (Polaris, Sirius, Vega). ## [1.6.0] - 2026-01-08 ### Added - **Visual Digital Twin Enhancements**: - Added **Angle Indicators**: Compass ring and N/S markers in the 3D view. - Added **Schematic Sky View**: A real-time 10° field-of-view display showing nearby bright stars (using `ephem` data). - Expanded Telemetry: Added velocities and power consumption to the web console. - **Improved Packaging**: Support for `[simulator]` and `[web]` optional extras. ### Fixed - Refined Evolution 8" dimensions for better faithfulness to real hardware. - Synchronized coordinate systems between physics engine and 3D visualization. ## [1.5.1] - 2026-01-08 ### Added - **Web Console & Digital Twin**: Implemented an optional 3D visualization console using Three.js and FastAPI. - **Evolution 8" Model**: Added a faithful geometric model of the Evolution 8 mount for visual validation. - **Collision Visualization**: Real-time visual warnings in the web console if the camera clearance is insufficient. - **Optional Dependencies**: Support for `[simulator]` and `[web]` extras in the Python package. ## [1.4.0] - 2026-01-07 ### Added - **PyPI Packaging**: Refactored project to modern `src` layout and added `pyproject.toml` for standard distribution. - **CLI Entry Points**: Added `indi-celestron-aux` and `celestron-aux-simulator` as standalone commands. - **Centralized Configuration**: All driver and validation settings are now managed via a single `config.yaml` with support for CLI and Environment overrides. - **Internal INDI Server**: Integrated `indipyserver` allowing the driver to run as a standalone network server. ## [1.3.0] - 2026-01-07 ### Added - **Homing Support**: Implemented `HOME` INDI property for automated homing/leveling sequences. - **Reference Parity**: Verified protocol parity with `indi-celestronaux` C++ driver. - **Improved Test Suite**: Added `test_11_homing` and improved wrap-around awareness in assertions. ## [1.2.0] - 2026-01-07 ### Added - **Dynamic Mount Detection**: Implemented a capabilities matrix mapping Model IDs to mount types (Alt-Az, GEM) and features. - **RTC Management**: Support for reading and writing Real-Time Clock data to the mount (`GPS_SET_TIME`, `GPS_SET_DATE`). - **Site Management**: Implemented writing Latitude/Longitude back to the mount hardware. - **Power Management**: New `AUX_POWER` property for reporting supply voltage and current consumption (Evolution battery module). - **Extended GPS Status**: Added satellite count reporting. - **Simulator Upgrades**: Added support for RTC, Location setting, and Battery telemetry commands. ### Changed - **Property Standardization**: Renamed motion switches to standard `SLEW_NORTH/SOUTH/WEST/EAST`. - **Slew Rate Compliance**: Added standard `TELESCOPE_SLEW_RATE` switch vector (Guide, Centering, Find, Max) mapped to the native 1-9 scale. - Updated `scripts/hit_validation.py` to match the new property names. ## [1.1.1] - 2026-01-07 ### Fixed - **External Simulator Support**: Resolved test failures occurring when running against an external TUI simulator. - **Test Robustness**: Increased GoTo step tolerance to 500 steps to account for simulator jitter and Periodic Error. - **Timing & Timeouts**: Increased test timeouts to 60-90 seconds to accommodate realistic slew speeds (4°/s) and TUI overhead. - **Test Isolation**: Added explicit mount position and rate reset in `asyncSetUp` for functional and safety tests. - **Environment Variables**: Ensured `EXTERNAL_SIM` and `SIM_PORT` are respected by all test suites. ## [1.1.0] - 2026-01-07 ### Added - **Hardware Interaction Test (HIT)**: Interactive safety routine for physical mount testing (`scripts/hit_validation.py`). - **Photography & Pointing Test (PPT)**: Automated accuracy measurement using INDI and ASTAP (`scripts/ppt_accuracy.py`). - **Emergency Abort**: Support for `TELESCOPE_ABORT_MOTION` in the driver. - **Residual-Aware Grid Thinning**: Improved alignment point management using consistency-weighted grid sectors. ### Changed - Updated `AlignmentModel` to use 15° grid sectors for better sky coverage. - Optimized functional tests for robustness against encoder jitter. ## [1.0.0] - 2026-01-07 ### Added - **Phase 11: Advanced Calibration** implemented. - **6-Parameter Geometric Model**: Compenses for Rotation, Cone Error ($CH$), Non-Perpendicularity ($NP$), and Altitude Index error ($ID$). - **Spatial Point Thinning**: Alignment points within 5 degrees are automatically replaced, ensuring even sky coverage and preventing local "clouds" of data from skewing the global model. - **Refraction Correction**: Switchable atmospheric refraction correction in the driver logic. - **Calibration Tab**: New INDI tab displaying measured mechanical errors and residuals. - **Graceful Fallback**: The alignment system automatically switches between Identity, Axis-Angle, SVD, and Full Geometric models depending on the number of available stars. - New test suite `tests/test_alignment_advanced.py`. ### Changed - Refactored `AlignmentModel` to use `scipy.optimize.least_squares` for non-linear fitting. - Updated `celestron_indi_driver.py` to support new calibration properties. - Formalized dependencies in `requirements.txt` (`scipy`). ## [0.9.0] - 2026-01-07 ### Added - **Phase 9: Comprehensive Test Documentation**: Added detailed Google-style docstrings to all 23+ tests, documenting methodology and expected results. - **Phase 10: Simulator Realism**: Added tunable imperfections to the NSE Simulator: - **Mechanical Backlash**: Simulates gear play when reversing. - **Periodic Error (PE)**: Sinusoidal tracking error in RA/Azimuth. - **Cone Error**: Mechanical offset in Altitude axis. - **Encoder Jitter**: Random Gaussian noise in position reporting. - **Simulator Core Test Suite**: Added `tests/test_simulator_core.py` to verify simulator physics and protocol compliance. - New TUI Panel: Displays active imperfections in the simulator interface. ### Changed - Improved `config.yaml` to support simulator-specific settings. - Refactored `NexStarScope` to support simulation of mechanical errors. ## [0.8.0] - 2026-01-07 ### Added - **Phase 8: Multi-Point SVD Alignment** implemented. - Replaced 3-point matrix inversion with a robust **Singular Value Decomposition (SVD)** solver. - Support for an **unlimited number of alignment stars** with automatic fit optimization. - **RMS Error** reporting in INDI (arcseconds residual). - **Proximity Weighting (Local Bias)**: Heavy weighting of points near the target for high-precision local models. - **Automatic Pruning**: Configurable circular buffer for alignment points (useful for long AP sessions). - Comprehensive documentation in `docs/` and `simulator/`. - New test suite `tests/test_alignment_svd.py`. ### Changed - Refactored `alignment.py` to use `numpy` for linear algebra. - Updated `celestron_indi_driver.py` to use the new alignment properties and logic. - Optimized alignment point management (Clear Last, Clear All). ## [0.7.0] - 2026-01-07 ### Added - **Phase 7: Moving Objects Support** implemented. - Support for tracking **Sun, Moon, and Planets** using `ephem` library. - Support for **Satellite tracking** using **TLE** data (`TLE_DATA` property). - New INDI properties: `TARGET_TYPE`, `PLANET_SELECT`, `TLE_DATA`. - Implemented `_get_target_equatorial` for dynamic coordinate resolution. - New test suite `tests/test_moving_objects.py` verifying non-sidereal tracking. ### Changed - **Simulator Calibration**: Adjusted slew speeds to match **Celestron Evolution** ($4^\circ/s$ Fast, $1^\circ/s$ Slow). - **Test Optimization**: Updated functional tests to use realistic speeds and longer timeouts. ## [0.6.1] - 2026-01-06 ### Fixed - Fixed **Altitude wrap-around bug** in simulator where negative altitudes were reported as large positive values (e.g., 337.5° instead of -22.5°). - Treated Altitude as a **linear axis** instead of a full circle to avoid incorrect movement directions in GoTo. - Added support for **signed angle representation** in simulator TUI for Altitude. - Normalized incoming motor controller coordinates to handle signed values correctly in driver logic. - All 17 automated tests (Functional, Safety, Math) verified passing. ## [0.6.0] - 2026-01-06 ### Added - **Phase 6: Safety & Accessories** implemented. - New INDI properties: `TELESCOPE_LIMITS`, `TELESCOPE_CORDWRAP`, `TELESCOPE_CORDWRAP_POS`. - Support for **Focuser** accessory (`ABS_FOCUS_POSITION`). - Support for **GPS** module (`GPS_REFRESH`, automatic location sync). - New test suite `tests/test_safety.py` for safety features. - Enforced software slew limits in `goto_position` and background monitoring. ### Changed - **Internationalization**: All documentation, comments, and UI strings translated to **English**. - Increased simulator slew rates: `GOTO_FAST` at 15 deg/s, `GOTO_SLOW` at 0.5 deg/s. - Improved AUX command logging in simulator TUI. - Fixed latitude/longitude parsing from GPS module. ## [0.5.3] - 2026-01-06 ### Added - New functional test `test_6b_robustness_pole` checking driver stability near the celestial pole. ### Fixed - Increased GoTo speeds in simulator (Fast: 5°/s, Slow: 1°/s) and extended timeouts in the driver, eliminating timeout errors in tests. - Improved physical motion model in simulator (smoother braking and no oscillations at target). - Secured mathematical functions against precision errors near singularities (poles, zenith). ## [0.5.2] - 2026-01-06 ### Added - Debug mode (`-d` / `--debug`) in simulator, reporting operation parameters to `stderr`. - Implementation of a sliding window for sky velocity calculations (vRA, vDec) to eliminate numerical noise. ### Fixed - Fixed oscillations of displayed vRA/vDec speeds in the TUI interface. - Improved velocity calculation stability in headless mode. ## [0.5.1] - 2026-01-06 ### Added - Extension of the simulator TUI interface with motor rotation speed display (vAlt, vAzm) in °/s. - Display of celestial sphere movement speeds (vRA, vDec) in "/s (arcsec/s). - Improved styling of the Textual interface. ## [0.5.0] - 2026-01-05 ### Added - Modern simulator TUI interface based on the **Textual** library (replacing curses). - Advanced **Alignment system** based on 3x3 matrix transformations. - Support for `TELESCOPE_ON_COORD_SET` property (SLEW, TRACK, SYNC modes). - Ability to add alignment points (max 3 stars) to correct mount alignment errors. - New test suite: `test_10_alignment_3star` and alignment math tests (`tests/test_alignment_math.py`). - Support for `EXTERNAL_SIM` environment variable in functional tests. ### Changed - Full code documentation (Google Style Docstrings) for all modules. - Removed deprecated function call warnings (`utcnow`, `get_event_loop`). - Improved `Park` logic – handling step counter wrap-around. - Changed configuration format to YAML (`config.yaml`). ## [0.4.0] - 2026-01-05 ### Added - Implementation of **Anti-backlash GoTo** approach logic (Phase 4). - New INDI properties: `GOTO_APPROACH_MODE` (DISABLED, FIXED_OFFSET, TRACKING_DIRECTION) and `GOTO_APPROACH_OFFSET`. - Advanced tracking loop based on **2nd order prediction** (Phase 5). - Angular velocity ($\omega$) determination algorithm using symmetric differential expression. - New INDI properties: `TELESCOPE_TRACK_MODE` (Sidereal, Solar, Lunar). - Communication locking mechanism (`asyncio.Lock`) in `AUXCommunicator` to ensure safe concurrent access to the AUX bus. - New functional tests: `test_7_approach_logic`, `test_8_approach_tracking_direction`, `test_9_predictive_tracking`. ### Changed - Refactored GoTo method to support multi-stage movement (Stage 1: Fast Approach, Stage 2: Slow Final). - `equatorial_to_steps` method now supports `time_offset` parameter. ## [0.3.0] - 2026-01-05 ### Added - Integration with `ephem` library for astronomical coordinate transformations. - Support for INDI property `GEOGRAPHIC_COORD` (Latitude, Longitude, Elevation). - Support for INDI property `EQUATORIAL_EOD_COORD` (RA/Dec). - Implementation of GoTo logic for equatorial coordinates (RA/Dec -> Alt/Az -> Encoders). - Automatic calculation and reporting of current RA/Dec based on encoder position. - New functional test `test_6_equatorial_goto` verifying transformation correctness. - Configuration file `config.yaml` support with default location in Bębło. - Stellarium integration instructions for visual verification. ### Changed - Improved `handle_equatorial_goto` robustness against missing event data. ## [0.2.1] - 2026-01-05 ### Added - Complete set of functional tests in `tests/` directory based on `unittest`. - Tests cover: Firmware Info, GoTo Precision, Tracking Logic, Park/Unpark, Connection Robustness. - Automatic capture of simulator logs during tests (`test_sim.log`). ### Changed - Improved robustness of `handle_sync`, `handle_park`, `handle_unpark`, `handle_guide_rate` methods against missing event data (facilitates testing). - Synchronized project state and roadmap. ## [0.2.0] - 2026-01-05 ### Added - TCP connection support in `AUXCommunicator` (URL `socket://host:port`). - "Echo Skipping" mechanism in the AUX protocol, enabling operation on single-wire buses. - Headless mode (`-t` / `--text`) in the telescope simulator. - `ephem` library support in the simulator. - Implementation of `TELESCOPE_GUIDE_RATE` property in the INDI driver. - Verified control loop operation (Slew/Read/Tracking) with an extended automated test. ### Changed - Full refactoring of `celestron_indi_driver.py` to adapt to `indipydriver 3.0.4` API. - Fixed `NumberMember` constructor errors (argument order). - Improved AUX frame reading stability (using `readexactly`). - Removed erroneous null bytes from source files. ## [0.1.0] - 2026-01-05 ### Added - Initial implementation of the Celestron AUX driver in Python. - Basic INDI properties: `CONNECTION`, `PORT`, `FIRMWARE_INFO`, `MOUNT_POSITION`. - Motion control: `SLEW_RATE`, `TELESCOPE_MOTION_NS/WE`, `TELESCOPE_ABSOLUTE_COORD`. - Mount synchronization and parking. - Telescope simulator with TUI (curses) interface. - Implementation of binary AUX protocol (packet packing/unpacking, checksums).