Skip to content

v7.1.0 - #45

Merged
thkruz merged 242 commits into
mainfrom
develop
Jul 6, 2026
Merged

v7.1.0#45
thkruz merged 242 commits into
mainfrom
develop

Conversation

@thkruz

@thkruz thkruz commented Jul 5, 2026

Copy link
Copy Markdown
Owner

This pull request introduces a comprehensive documentation site for OOTK, improves CI workflows, and refines linting and code quality rules. The most important changes are grouped below.


Documentation Site and Theming

  • Added a new VitePress-based documentation site with custom navigation, sidebar, and theming under docs/.vitepress/, including a KeepTrack-branded color palette and integration of all major guides and examples. [1] [2] [3]
  • Added a top-level documentation index (docs/README.md) and improved documentation references and links in the main README.md, making it easier for users to find guides and feature overviews. [1] [2]
  • Added a detailed example for conjunction assessment in docs/examples/conjunction-assessment-example.md.

CI/CD Improvements

  • Refactored the GitHub Actions workflow: added a new circular-check job for circular dependency checking using Madge, matrix testing for Node.js 18.x and 20.x, and separated integration tests into their own job. The build artifacts are now uploaded and reused in test jobs for efficiency. [1] [2]
  • Added .madgerc configuration to support circular dependency detection.

Linting and Code Quality

  • Refined .eslintrc.json: replaced the jest environment with explicit global definitions for test functions (to support Vitest or other runners), improved rule formatting for readability, increased the max-len to 180, disabled the no-undefined rule, and enforced no .js extension in import/export statements. [1] [2] [3] [4] [5] [6]

Build Configuration Cleanup

  • Removed the unused babel.config.cjs file, reflecting a move away from Babel-based builds.

thkruz added 30 commits October 23, 2025 06:49
- Remove .js extensions and normalize internal import/export paths across src
- Convert several base classes/methods to abstract (Force, Interpolator, StateInterpolator, FieldInterpolator, Observation, etc.) instead of throwing NotImplemented errors
- Adjust method signatures and unused parameter naming in Propagator, KeplerPropagator, Sgp4Propagator
- Reorder and tidy index exports for modules (body, coordinate, covariance, force, interfaces, operations, propagator, observation, orbit_determination, time, transforms, utils, etc.)
- Update tsconfig.base.json: add @src path, change module to esnext and moduleResolution to bundler
- Bump package version to 6.0.0-rc.1
- Increase ESLint max-len to 180
- Remove outdated examples/node.js and update examples to use ../dist/main import
- Minor test and formatting tweaks (imports, assertions, helper formatting)
…tend SpaceObjectType with planetary/moon types and update tsconfig lib
Add detailed guide showcasing OOTK's unique capabilities beyond SGP4:
- High-fidelity numerical propagation with force models
- Initial orbit determination (Lambert, Gibbs, Herrick-Gibbs, Gooding)
- Sensor operations and pass prediction
- Astronomical calculations (Sun, Moon, eclipses)
- Advanced coordinate transformations (15+ systems)
- Force modeling (gravity harmonics, drag, SRP, third-body)
- Maneuver planning and optimization
- Covariance and uncertainty analysis
- Multiple time systems (UTC, GPS, TAI, TDB, TT)
- Relative motion analysis (RIC, Hill frames)

Includes practical code examples and performance considerations
for professional orbital mechanics applications.
Add comprehensive guide for using Lambert's problem solution with
the Satellite class to generate state vectors without SGP4.

New files:
- docs/lambert-satellite-integration-guide.md: Complete guide covering
  Lambert solver basics, integration workflows, and advanced usage
- examples/lambert-state-vector.ts: Seven practical examples demonstrating
  Lambert IOD usage, numerical propagation, TLE conversion, transfer
  orbit planning, and validation

Updated:
- examples/README: Add instructions for running Lambert examples
- package-lock.json: Update dependencies after npm install

The guide covers:
- Basic Lambert solution from two position observations
- Using Lambert with RungeKutta89 propagator for high-precision propagation
- Converting Lambert solutions to Satellite objects via TLE
- Transfer orbit planning and delta-V calculations
- Multi-revolution transfers
- Short path vs long path comparison
- Solution validation and error handling

Examples demonstrate practical applications including orbit determination,
rendezvous planning, and transfer trajectory design.
- Add extensive user guide covering all OOTK features
  - Satellite operations and tracking
  - Sensor operations and pass predictions
  - Coordinate systems and transformations
  - Orbit propagation methods
  - Force models and perturbations
  - Initial orbit determination
  - Observations and time systems
  - Interpolation and mathematical operations
  - Optimization and covariance
  - Celestial bodies and maneuvers
  - Advanced topics and performance tips

- Add getting started guide for new users
  - Step-by-step installation instructions
  - Tutorial for tracking first satellite
  - Explanation of coordinate systems
  - Working with sensors and pass predictions
  - Common use cases with complete examples
  - Troubleshooting section
  - Quick reference and example projects

- Add documentation index (docs/README.md)
  - Navigation guide for all documentation
  - Quick links to key topics
  - Clear structure for beginners vs advanced users

- Update main README.md with documentation links
Added 8 new example files showcasing different features of the ootk library:

- orbital-elements.ts: Demonstrates working with classical orbital elements,
  conversions between elements and state vectors, and TLE generation

- maneuvers.ts: Shows Hohmann transfer calculations, two-burn orbit transfers,
  and delta-V computations for different orbit types

- moon.ts: Covers lunar position calculations, moon rise/set times, phase
  calculations, and angular diameter computations

- time-systems.ts: Illustrates different epoch types (UTC, TAI, TT, TDB, GPS),
  time system conversions, Julian dates, and GMST calculations

- coordinate-transforms.ts: Demonstrates conversions between coordinate frames
  (ECI, ECF, LLA, J2000, TEME, ITRF) and relative coordinates (RIC)

- satellite-passes.ts: Shows satellite pass prediction, visibility checks,
  field of view constraints, and look angle tracking

- doppler.ts: Covers Doppler shift calculations for satellite communications,
  frequency shifts across different bands, and Doppler rate of change

- observations.ts: Demonstrates RADEC (Right Ascension/Declination) observations,
  topocentric vs geocentric coordinates, and angular separations

These examples provide users with practical code showing how to use the
library's features for real-world orbital mechanics applications.
Implement comprehensive conjunction assessment capabilities with:

- **ConjunctionEvent**: Data structure for storing conjunction analysis results
  - TCA (Time of Closest Approach)
  - Miss distance with RIC (Radial-Intrack-Crosstrack) components
  - Relative velocity
  - Combined covariance matrices
  - Probability of collision
  - Mahalanobis distance calculation
  - High-risk event detection

- **ProbabilityOfCollision**: Pc calculation using Chan's 2D method
  - Projects covariance onto encounter plane (B-plane)
  - Computes 2D probability density integration
  - Handles edge cases (low relative velocity)
  - Analytical approximations for performance
  - Covariance matrix combination

- **ConjunctionAssessment**: Main workflow orchestrator
  - Supports TLE or state vector inputs
  - Multiple propagator options (SGP4, RungeKutta89)
  - TCA finding using golden section optimization
  - Covariance propagation using sigma-point method
  - Leverages existing TLE quality assessment
  - High-fidelity force model integration

Key Features:
- Historical TLE accuracy-based covariance initialization
- Regime-specific covariance aging (LEO/MEO/GEO/HEO)
- Flexible propagator selection for accuracy/speed tradeoff
- Comprehensive test coverage
- Example implementations for common use cases

The workflow integrates with existing OOTK capabilities:
- CovarianceSample for sigma-point propagation
- RIC coordinates for relative geometry
- GoldenSection optimizer for TCA search
- Multiple propagator types (SGP4, RK4, RK89)
- Force models for high-fidelity prediction

Example usage in conjunction-assessment-example.ts demonstrates:
1. Basic TLE-based conjunction assessment
2. High-fidelity propagation with covariance
3. Custom covariance matrix input
4. Multi-object screening workflows
…on-01EWSQumNxLxFtXFV2S3xkTm

Lambert Satellite Integration
…3HWHLUfYLohVxx5oGy

feat: add comprehensive examples for library features
…flow-013nkXNDCBzpdeJG9z7Y7N2b

feat: add high accuracy conjunction assessment workflow
…sJTZW8hW7kNicXcimMr

docs: add comprehensive user guide and getting started documentation
…zuUbe9JhV1TN2HpHnJGx

docs: add comprehensive advanced features guide
…IOD and RungeKuttaAdaptive for improved error handling and integration logic

- Added comprehensive test suite for GaussIOD based on Vallado's examples, covering various orbital regimes (GEO, MEO, LEO) and error handling scenarios.
- Introduced a test suite for GoodingIOD, validating its performance with real satellite observations and convergence characteristics.
- Refactored ModifiedGoodingIOD to utilize the estimate method for initial orbit determination.
- Enhanced RungeKuttaAdaptive with additional checks for NaN values and validation of computed states to prevent integration errors.
thkruz added 10 commits June 22, 2026 20:50
Observation, ObservationOptical, and ObservationRadar were accepted by GoodingIOD.solve() but not re-exported from src/main.ts, so consumers could not construct them.
All 16 examples now run to exit 0 with npx tsx. Imports use the ootk package name via npm self-reference, sections are marked with #region for docs embedding, and drifted APIs were rewritten: GroundStation/PhasedArrayRadar with FieldOfView replace the old Sensor params, TwoBurnOrbitTransfer.hohmannTransfer is static, RIC.fromJ2000 replaces toRIC, epoch conversions derive from EpochUTC, and GoodingIOD uses ObservationOptical.
…throughs

Adds a VitePress site (docs:dev/build/preview scripts) with a landing page, the existing guides in a sidebar, and one walkthrough page per example that embeds the runnable script by #region snippet imports plus captured output. Themed with the KeepTrack International Orange Engineering palette, with brighter accents for dark-mode text contrast.
@thkruz thkruz self-assigned this Jul 5, 2026
Copilot stopped work on behalf of thkruz due to an error July 5, 2026 14:52
thkruz added 8 commits July 5, 2026 10:53
Port .eslintrc.json to eslint.config.js (flat config required by ESLint 9), auto-dropping core rules removed in v9. Add test-file overrides and relax rules that conflict with the astronomy-engine API and data-parser regexes. Remove the unsupported empty .eslintignore.
Apply ESLint 9 autofixes plus targeted fixes: add missing /u regex flags, remove dead vars/imports, merge duplicate imports, drop .js import extensions, remove debug console calls, cast to Kilometers instead of any, refactor a 9-arg helper to an options object, and split over-long template literals. No behavior change; full test suite and build pass.
Apply ESLint 9 autofixes and remove unused imports/vars, add /u regex flags, and avoid bare unused expressions in test files.
@thkruz thkruz changed the title v6.0.7 v7.0.1 Jul 6, 2026
@thkruz thkruz changed the title v7.0.1 v7.1.0 Jul 6, 2026
@thkruz
thkruz merged commit 6221ff6 into main Jul 6, 2026
7 checks passed
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 7.0.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant