Skip to content

Version 0.1.0

← Back to Changelog

Version 0.1.0


  • Initial Release
  • Main application entry point (main.ts).
  • Dockview-based UI layout management (controllers/dockviewController.ts).
    • Support for multiple tabbed engine views.
    • Support for dedicated controls/info group.
    • Factory for creating Dockview components (EnginePanel, UiPanel, SettingsPanel, ProgressPanel).
    • State integration for active panel (core-state/activePanelApi).
    • Ability to maximize/restore view groups.
  • Toolbar controller (controllers/toolbarController.ts) with:
    • Button to add new engine/UI panel pairs.
    • Button to toggle floating settings panel.
    • Simulation controls component (components/toolbar/SimulationControls).
    • Seed form component (components/toolbar/SeedForm).
  • Core UI Components:
    • EnginePanel: Displays a 3D simulation instance.
    • UiPanel: Hosts controls associated with an EnginePanel.
    • SettingsPanel: Floating panel for global settings.
    • ProgressPanel: Displays progress/status.
  • Specific UI Control Components (components/ui-controls/):
    • FocusControl
    • RendererInfoDisplay
    • CelestialInfo
  • Shared Components (components/shared/): e.g., TeskooanoButton.
  • Integration with core packages: @teskooano/app-simulation, @teskooano/core-state, @teskooano/renderer-threejs, @teskooano/procedural-generation.
  • Basic Vite build setup (vite.config.ts).
  • Initial release of the core math package.
  • OSVector3: Custom 3D vector class with common operations (add, sub, dot, cross, normalize, etc.) and Three.js interoperability (toThreeJS, applyQuaternion).
  • constants: Essential mathematical constants (PI, EPSILON, DEG_TO_RAD, etc.).
  • utils: Namespace containing various utility functions:
    • Mathematical helpers (clamp, lerp, degToRad, equals, power-of-two functions).
    • General utilities (generateUUID).
    • Function modifiers (debounce, throttle, memoize).
  • Basic project setup (package.json, tsconfig.json, moon.yml).
  • Initial README.md, ARCHITECTURE.md, CHANGELOG.md, and TODO.md.
  • Initial release of the @teskooano/design-system package.
  • CSS Custom Properties (Tokens) for colors, typography, spacing, borders, shadows, etc. defined in src/tokens.css.
  • Base HTML element styling (reset, typography, forms, buttons) in src/styles.css.
  • Specific styles for application layout elements (#toolbar, .composite-engine-panel).
  • Theming overrides for Dockview (.dockview-theme-abyss) integrated into src/tokens.css and src/styles.css.
  • Responsive design adjustments using media queries in src/styles.css.
  • Export configuration in package.json for styles.css and colors.css.
  • Helper functions (startRecording, stopRecording, requestMediaPermissions) and Observable (mediaRecorderState$) for the MediaRecorder API.
  • Helper functions (requestRemotePlayback, watchAvailability) and Observable (remotePlaybackAvailability$) for the Remote Playback API.
  • Helper functions (startScreenCapture, stopScreenCapture) and Observable (screenCaptureState$) for the Screen Capture API.
  • Helper functions for ResizeObserver (observeResize) and IntersectionObserver (observeIntersection).
  • Wrapper classes (safeLocalStorage, safeSessionStorage) for localStorage and sessionStorage with automatic JSON serialization/parsing.
  • Basic enhancedFetch wrapper for the native Fetch API.
  • Helper function createWorker for managing Web Workers.
  • Helper function createAnimationLoop for managing requestAnimationFrame loops.
  • Helper function observePerformance for PerformanceObserver.
  • Helper function observeMutations for MutationObserver.
  • Helper functions for Fullscreen API (requestFullscreen, exitFullscreen, toggleFullscreen, etc.).
  • Helper functions for Clipboard API (writeTextToClipboard, readTextFromClipboard).
  • Reactive Nanostore (batteryStore) for Battery Status API.
  • RxJS Observable (deviceOrientation$) for Device Orientation Events, including permission handling for iOS 13+.
  • Helper functions (observeIdleState, requestIdleDetectionPermission) and Observable (idleState$) for the experimental Idle Detection API.
  • RxJS Observable (animationFrames$) for requestAnimationFrame timestamps.
  • RxJS Observable (fullscreenChange$) for fullscreen state changes.
  • RxJS Observable factories (observeIntersection$, observeMutations$, observePerformance$, observeResize$) as alternatives for Observer APIs.

All notable changes to the @teskooano/app-simulation package will be documented in this file.

  • Initial implementation of the simulation package.
  • Core simulationLoop integrating physics updates (@teskooano/core-physics) and state management (@teskooano/core-state).
  • Simulation class for initializing the ThreeJS renderer (@teskooano/renderer-threejs).
  • Support for simulation time scaling and pausing via simulationState.
  • Basic N-body physics calculation (direct summation).
  • Collision detection and handling (including destruction/annihilation statuses).
  • Direct calculation and application of object rotations based on sidereal periods.
  • Event emission for destruction (rendererEvents) and orbit updates (CustomEvents).
  • resetSystem utility function for clearing and reloading simulation state.
  • Example system initializers in the systems/ directory (e.g., redDwarfSystem, blueGiantSystem, etc.).

All notable changes to this project will be documented in this file.

  • Initial release of the core state management package.
  • Foundation: Uses nanostores for reactive state management.
  • Core Stores:
    • celestialObjectsStore: Map store for all CelestialObject data (including physicsStateReal).
    • celestialHierarchyStore: Map store for parent-child object relationships.
    • simulationState: Atom store for global simulation settings (time, pause state, camera, etc.).
  • State Modification: Provided actions (simulationActions, celestialActions) for controlled updates to simulation settings and celestial objects (add, remove, update).
  • Object Creation: Implemented celestialFactory to create initial CelestialObject states from input data, including calculating initial physics state from orbital parameters using @teskooano/core-physics.
  • Physics Integration: Logic in game/physics.ts to synchronize state updates from the physics engine back into the celestialObjectsStore, including calculation of derived scaled positions and rotations.
  • Panel State: Basic stores and registry for UI panel management (panelState.ts, panelRegistry.ts).
  • Initial documentation (README.md, ARCHITECTURE.md) and project setup.

All notable changes to this project will be documented in this file.

  • Initial release of the core physics engine package.
  • Core Concepts: Established PhysicsStateReal using SI units (meters, kg, seconds).
  • Force Calculation: Implemented Newtonian gravity, with placeholders for relativistic and non-gravitational forces.
  • Numerical Integration: Provided Velocity Verlet (default), standard Euler, and symplectic Euler integrators.
  • Optimization: Integrated Barnes-Hut algorithm via Octree for O(N log N) gravitational force approximation.
  • Collision Handling: Added detection and basic resolution (momentum conservation, destruction) for celestial bodies.
  • Simulation Loop: Core updateSimulation orchestrates force calculation, integration, and collision handling.
  • Orbital Mechanics: Utilities for converting between state vectors and orbital elements.
  • Units: Defined physical constants and unit conversion utilities.
  • Utilities: VectorPool for optimizing vector allocations.
  • Initial documentation (README.md, ARCHITECTURE.md) and project setup.

All notable changes to the @teskooano/core-debug package will be documented in this file.

  • Initial implementation of the debug utilities package.
  • Central debugConfig for global control of logging level and visualization.
  • DebugLevel enum and helper functions (isDebugEnabled, isVisualizationEnabled, setVisualizationEnabled).
  • Custom logger (logger.ts) with multiple levels, named logger support (createLogger), and basic timing (logger.time).
  • Vector debugging utilities (vector-debug.ts) for storing/retrieving OSVector3 instances.
  • THREE.js vector debugging utilities (three-vector-debug.ts) for storing/retrieving THREE.Vector3 instances.
  • Placeholder for celestial object debugging utilities (celestial-debug.ts).
  • Initial release of the @teskooano/data-types package.
  • Comprehensive TypeScript definitions for celestial objects (CelestialObject, StarProperties, PlanetProperties, GasGiantProperties, CometProperties, AsteroidFieldProperties, OortCloudProperties, RingSystemProperties).
  • Detailed enumerations for classifying celestial types, planetary surfaces, stellar classes, atmospheres, etc.
  • Definition of OrbitalParameters using real-world SI units.
  • Discriminated unions for specific properties (CelestialSpecificPropertiesUnion) and surface types (SurfacePropertiesUnion).
  • Core physics state definition (PhysicsStateReal) using real-world units.
  • Scaling constants (SCALE, RENDER_SCALE_AU, etc.) and utility functions (scaleSize, scaleDistance, etc.) in scaling.ts for converting between real-world and visual units.
  • Top-level simulation state (SimulationState) and physics function types (PairForceCalculator, Integrator) in main.ts.
  • Extensive UI type definitions (UIComponentType, BaseUIComponent, UIEventType, etc.) in ui.ts.
  • Basic physics type definitions (PhysicsStateReal) in physics.ts.
  • Event type definitions (events.ts).
  • Global type definitions (globals.d.ts).
  • Initial release of the Three.js renderer integrator package.
  • ModularSpaceRenderer class facade for initializing and coordinating components from core, visualization, interaction, and effects packages.
  • RendererStateAdapter for managing shared visual state.
  • Basic visualization components: Grid helper, background management.
  • Object management for celestial bodies based on state changes (creation, updates, removal).
  • Orbit line visualization.
  • Label rendering using CSS2DRenderer.
  • Camera follow functionality.
  • Event system (rendererEvents).
  • Basic setup and utility functions.
  • Updated README.md and ARCHITECTURE.md to accurately reflect the package’s role as an integrator, correcting previous documentation that implied it contained all logic.

Changelog - @teskooano/systems-procedural-generation

Section titled “Changelog - @teskooano/systems-procedural-generation”

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

  • Initial Release
  • Deterministic star system generation from a string seed (generateSystem).
  • Support for single, binary, trinary, and quaternary star systems with barycentric orbit calculations (core-physics).
  • Generation of Planets (Rocky, Terrestrial, Gas Giant, Ice, Desert, Lava, Barren) with physical properties, basic atmosphere, and color.
  • Generation of Moons (0-4 per planet) with orbital parameters.
  • Generation of Asteroid Belts.
  • Generation of Planetary Rings.
  • Placement logic using exponential distribution for realistic body spacing.
  • Calculation of initial physics state (position, velocity) for all generated objects.
  • Seeded PRNG implementation (seeded-random.ts).
  • Modular generator structure (generators/ directory).
  • Utility functions and constants (utils.ts, constants.ts).
  • Basic unit tests for the generator (generator.spec.ts).

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

  • Core Renderer Interface (CelestialRenderer): Basic contract for creating, updating, and disposing celestial object meshes.
  • Terrestrial Planet/Moon Renderer (BaseTerrestrialRenderer): Unified renderer for terrestrial bodies.
    • Supports procedural texture generation using 3D Simplex Noise (generation/procedural-texture.ts).
    • Includes generation of color and normal map textures (OffscreenCanvas).
    • Implements detailed color mapping based on surface properties (getColorForHeight).
    • Integrates basic IndexedDB caching for generated textures.
    • Includes AtmosphereMaterial for atmospheric haze effect (Fresnel-based).
    • Uses external LOD helper (@teskooano/threejs-effects).
    • Dispatches texture-progress events (utils/event-dispatch.ts).
  • Star Renderers (renderers/stars/): Renderers for main sequence spectral types (O, B, A, F, G, K, M) and exotic objects.
    • BaseStarRenderer with common logic and embedded shaders (star.vertex.glsl, star.fragment.glsl).
    • Surface effects include turbulence, pulsing, metallic fluid look.
    • CoronaMaterial for billboarded corona effect.
    • Specific renderers for Neutron Stars (with jets), White Dwarfs, Wolf-Rayet, Schwarzschild & Kerr Black Holes.
    • Integration with GravitationalLensingHelper for relevant objects.
  • Gas Giant Renderers (renderers/gas-giants/): Class-based system (Sudarsky I-V).
    • BaseGasGiantRenderer with common logic.
    • Specific materials and external GLSL shaders per class using procedural noise.
    • Material-level LOD support (updateLOD).
    • Integration with rings renderer.
  • Planetary Ring Renderer (renderers/rings/): Modular system for creating rings.
    • Data-driven createRings function based on RingProperties.
    • Uses RingGeometry and RingMaterial with external shaders.
    • Includes basic lighting and parent body shadow casting on rings.
  • Particle Renderers (renderers/particles/): Uses THREE.Points.
    • AsteroidFieldRenderer for disk-shaped fields.
    • OortCloudRenderer for spherical shell clouds (includes particle count LOD).
    • Uses shared embedded point sprite texture.
  • Earth Renderer (renderers/earth/): Specialized renderer for Earth.
    • Uses specific textures (day, night, specular, bump, cloud).
    • Layered approach with EarthMaterial and CloudMaterial.
    • Utilizes external LOD helper (createLODSphereMesh).
    • Implements day/night cycle based on lighting.
  • Common Utilities (renderers/common/):
    • GravitationalLensingHelper: Reusable gravitational lensing effect using render-to-texture.
  • Texture Generation System (textures/):
    • TextureFactory facade.
    • Specific generator classes (TerrestrialTextureGenerator, etc.).
    • TextureTypes.ts defining configuration options.
    • TextureGeneratorBase for potential shader-based generation (currently mismatched with terrestrial).
  • Shaders (shaders/): Organized GLSL shaders for various effects mentioned above.
  • Utilities (utils/):
    • Event dispatching for texture progress.
    • Type definitions for events.
  • Texture Generation System Refactor:
    • Added TextureResourceManager for centralized WebGL resource management.
    • Refactored texture generators to use instance methods instead of static methods.
    • Standardized TextureResult interface for all texture generators.
    • Improved texture caching with built-in caching in base generator class.
    • Enhanced resource management for efficient WebGL context usage.
    • Added support for both WebGL shader-based and canvas-based generation approaches.

All notable changes to this project will be documented in this file.

  • ObjectManager: Manages creation, update, and removal of celestial object meshes based on renderableObjectsStore.
    • Integrates specialized renderers from @teskooano/systems-celestial (Gas Giants, Asteroid Fields, Rings).
    • Integrates LODManager from @teskooano/renderer-threejs-effects.
    • Handles basic label creation/removal via CSS2DManager.
    • Manages light source updates via LightManager.
    • Includes GravitationalLensingHandler for potential lensing effects.
    • Includes debris visualization effects on object destruction.
  • OrbitManager: Manages orbit visualizations.
    • Supports Keplerian mode (static ellipses) and Verlet mode (dynamic trails/predictions).
    • Automatically switches mode based on simulationState (physicsEngine).
    • Includes throttling for Verlet prediction/trail updates.
    • Supports highlighting of selected object’s orbit/trail.
  • BackgroundManager: Creates and manages a multi-layered, animated starfield background with parallax effect.
  • Helper Modules: Includes sub-modules (object-manager/, orbit-manager/, background-manager/) for specific logic (mesh creation, orbit calculation, star generation, etc.).
  • State Integration: Deeply integrated with @teskooano/core-state for driving updates.
  • Architecture Update: Refactored to export individual managers (ObjectManager, OrbitManager, BackgroundManager) instead of a single facade class.

All notable changes to this project will be documented in this file.

  • ControlsManager: Manages THREE.OrbitControls for camera interaction (zoom, pan, rotate).
  • Smooth Transitions: Implemented GSAP-based animations for moveToPosition, pointCameraAtTarget, and setFollowTarget camera actions.
  • Object Following: Enabled the camera to track a THREE.Object3D while maintaining user orbit control.
  • State Synchronization: Updates @teskooano/core-state with camera position/target on user interaction.
  • CSS2DManager: Manages HTML elements overlaid on the 3D scene using THREE.CSS2DRenderer.
  • Layered Labels: Supports organizing CSS2D elements (like celestial object names and AU markers) into layers (CELESTIAL_LABELS, AU_MARKERS) with visibility controls.
  • Orphan Check: CSS2DManager includes a check to remove labels whose parent object no longer exists in the scene.
  • Interaction Handling: Explicitly sets pointer-events: none on CSS2D elements to prevent blocking underlying canvas interactions.
  • Basic Setup: Includes index.ts for exporting managers, setup.ts (potentially for tests), and Vitest configuration (vitest.config.ts).

All notable changes to this project will be documented in this file.

  • Initial release of the @teskooano/renderer-threejs-effects package.
  • EffectsManager: Facade class to coordinate effects.
  • LightManager: Manages ambient light and dynamic star point lights.
  • LODManager: Manages Level of Detail for scene objects using THREE.LOD.
  • Helper functions in lod-manager/ for building LOD meshes, calculating distances, and debug visualization.
  • Initial release of the core renderer package.
  • SceneManager: Manages Three.js Scene, Camera, and WebGLRenderer.
  • AnimationLoop: Manages the requestAnimationFrame loop and callbacks.
  • StateManager: Connects renderer components to @teskooano/core-state stores (simulationState, celestialObjectsStore).
  • events: Shared EventEmitter3 instance (rendererEvents).
  • Basic debug helpers (Grid, Origin Sphere) in SceneManager.
  • Performance stats calculation in AnimationLoop.