Version 0.1.0
Version 0.1.0
App: Teskooano
Added
- 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 anEnginePanel.SettingsPanel: Floating panel for global settings.ProgressPanel: Displays progress/status.
- Specific UI Control Components (
components/ui-controls/):FocusControlRendererInfoDisplayCelestialInfo
- 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).
Package: Core Math
Added
- 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).
- Mathematical helpers (
- Basic project setup (
package.json,tsconfig.json,moon.yml). - Initial
README.md,ARCHITECTURE.md,CHANGELOG.md, andTODO.md.
Package: App Design System
[0.1.0] - 2025-04-24
Added
- Initial release of the
@teskooano/design-systempackage. - 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 intosrc/tokens.cssandsrc/styles.css. - Responsive design adjustments using media queries in
src/styles.css. - Export configuration in
package.jsonforstyles.cssandcolors.css.
Package: App Web APIs
[0.1.0] - 2025-04-24
Added
- 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) andIntersectionObserver(observeIntersection). - Wrapper classes (
safeLocalStorage,safeSessionStorage) forlocalStorageandsessionStoragewith automatic JSON serialization/parsing. - Basic
enhancedFetchwrapper for the native Fetch API. - Helper function
createWorkerfor managing Web Workers. - Helper function
createAnimationLoopfor managingrequestAnimationFrameloops. - Helper function
observePerformanceforPerformanceObserver. - Helper function
observeMutationsforMutationObserver. - 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$) forrequestAnimationFrametimestamps. - RxJS Observable (
fullscreenChange$) for fullscreen state changes. - RxJS Observable factories (
observeIntersection$,observeMutations$,observePerformance$,observeResize$) as alternatives for Observer APIs.
Package: App Simulation
Changelog
All notable changes to the @teskooano/app-simulation package will be documented in this file.
[0.1.0] - 2025-04-24
Added
- Initial implementation of the simulation package.
- Core
simulationLoopintegrating physics updates (@teskooano/core-physics) and state management (@teskooano/core-state). Simulationclass 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). resetSystemutility function for clearing and reloading simulation state.- Example system initializers in the
systems/directory (e.g.,redDwarfSystem,blueGiantSystem, etc.).
Package: Core State
Changelog
All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Added
- Initial release of the core state management package.
- Foundation: Uses
RxJSfor reactive state management. - Core Stores:
celestialObjectsStore: Map store for allCelestialObjectdata (includingphysicsStateReal).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
celestialFactoryto create initialCelestialObjectstates from input data, including calculating initial physics state from orbital parameters using@teskooano/core-physics. - Physics Integration: Logic in
game/physics.tsto synchronize state updates from the physics engine back into thecelestialObjectsStore, 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.
Package: Core Physics
Changelog
All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Added
- Initial release of the core physics engine package.
- Core Concepts: Established
PhysicsStateRealusing 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
Octreefor O(N log N) gravitational force approximation. - Collision Handling: Added detection and basic resolution (momentum conservation, destruction) for celestial bodies.
- Simulation Loop: Core
updateSimulationorchestrates 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:
VectorPoolfor optimizing vector allocations. - Initial documentation (
README.md,ARCHITECTURE.md) and project setup.
Package: Core Debug
Changelog
All notable changes to the @teskooano/core-debug package will be documented in this file.
[0.1.0] - 2025-04-24
Added
- Initial implementation of the debug utilities package.
- Central
debugConfigfor global control of logging level and visualization. DebugLevelenum 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/retrievingOSVector3instances. - THREE.js vector debugging utilities (
three-vector-debug.ts) for storing/retrievingTHREE.Vector3instances. - Placeholder for celestial object debugging utilities (
celestial-debug.ts).
Package: Data Types
[0.1.0] - 2025-04-24
Added
- Initial release of the
@teskooano/data-typespackage. - 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
OrbitalParametersusing 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.) inscaling.tsfor converting between real-world and visual units. - Top-level simulation state (
SimulationState) and physics function types (PairForceCalculator,Integrator) inmain.ts. - Extensive UI type definitions (
UIComponentType,BaseUIComponent,UIEventType, etc.) inui.ts. - Basic physics type definitions (
PhysicsStateReal) inphysics.ts. - Event type definitions (
events.ts). - Global type definitions (
globals.d.ts).
Package: Renderer ThreeJS
[0.1.0] - 2025-04-24
Added
- Initial release of the Three.js renderer integrator package.
ModularSpaceRendererclass facade for initializing and coordinating components fromcore,visualization,interaction, andeffectspackages.RendererStateAdapterfor 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.
Changed
- Updated
README.mdandARCHITECTURE.mdto accurately reflect the package’s role as an integrator, correcting previous documentation that implied it contained all logic.
Package: Systems Procedural Generation
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.
[0.1.0] - 2025-04-24
Added
- 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).
Package: Systems Celestial
Changelog - @teskooano/celestial
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.
[0.1.0] - 2025-04-24
Added
- 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
AtmosphereMaterialfor atmospheric haze effect (Fresnel-based). - Uses external LOD helper (
@teskooano/threejs-effects). - Dispatches
texture-progressevents (utils/event-dispatch.ts).
- Supports procedural texture generation using 3D Simplex Noise (
- Star Renderers (
renderers/stars/): Renderers for main sequence spectral types (O, B, A, F, G, K, M) and exotic objects.BaseStarRendererwith common logic and embedded shaders (star.vertex.glsl,star.fragment.glsl).- Surface effects include turbulence, pulsing, metallic fluid look.
CoronaMaterialfor billboarded corona effect.- Specific renderers for Neutron Stars (with jets), White Dwarfs, Wolf-Rayet, Schwarzschild & Kerr Black Holes.
- Integration with
GravitationalLensingHelperfor relevant objects.
- Gas Giant Renderers (
renderers/gas-giants/): Class-based system (Sudarsky I-V).BaseGasGiantRendererwith common logic.- Specific materials and external GLSL shaders per class using procedural noise.
- Material-level LOD support (
updateLOD). - Integration with
ringsrenderer.
- Planetary Ring Renderer (
renderers/rings/): Modular system for creating rings.- Data-driven
createRingsfunction based onRingProperties. - Uses
RingGeometryandRingMaterialwith external shaders. - Includes basic lighting and parent body shadow casting on rings.
- Data-driven
- Particle Renderers (
renderers/particles/): UsesTHREE.Points.AsteroidFieldRendererfor disk-shaped fields.OortCloudRendererfor 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
EarthMaterialandCloudMaterial. - 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/):TextureFactoryfacade.- Specific generator classes (
TerrestrialTextureGenerator, etc.). TextureTypes.tsdefining configuration options.TextureGeneratorBasefor 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.
Changed
- Texture Generation System Refactor:
- Added
TextureResourceManagerfor centralized WebGL resource management. - Refactored texture generators to use instance methods instead of static methods.
- Standardized
TextureResultinterface 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.
- Added
Package: Renderer ThreeJS Visualization
Changelog
All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Added
ObjectManager: Manages creation, update, and removal of celestial object meshes based onrenderableObjectsStore.- Integrates specialized renderers from
@teskooano/systems-celestial(Gas Giants, Asteroid Fields, Rings). - Integrates
LODManagerfrom@teskooano/renderer-threejs-lod. - Handles basic label creation/removal via
CSS2DManager. - Manages light source updates via
LightManager. - Includes
GravitationalLensingHandlerfor potential lensing effects. - Includes debris visualization effects on object destruction.
- Integrates specialized renderers from
OrbitManager: Manages orbit visualizations.- Supports
Keplerianmode (static ellipses) andVerletmode (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.
- Supports
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-statefor driving updates. - Architecture Update: Refactored to export individual managers (
ObjectManager,OrbitManager,BackgroundManager) instead of a single facade class.
Package: Renderer ThreeJS Interaction
Changelog
All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Added
ControlsManager: ManagesTHREE.OrbitControlsfor camera interaction (zoom, pan, rotate).- Smooth Transitions: Implemented GSAP-based animations for
moveToPosition,pointCameraAtTarget, andsetFollowTargetcamera actions. - Object Following: Enabled the camera to track a
THREE.Object3Dwhile maintaining user orbit control. - State Synchronization: Updates
@teskooano/core-statewith camera position/target on user interaction. CSS2DManager: Manages HTML elements overlaid on the 3D scene usingTHREE.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:
CSS2DManagerincludes a check to remove labels whose parent object no longer exists in the scene. - Interaction Handling: Explicitly sets
pointer-events: noneon CSS2D elements to prevent blocking underlying canvas interactions. - Basic Setup: Includes
index.tsfor exporting managers,setup.ts(potentially for tests), and Vitest configuration (vitest.config.ts).
Package: Renderer ThreeJS Effects
Changelog
All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Added
- Initial release of the
@teskooano/renderer-threejs-lightingpackage. - Initial release of the
@teskooano/renderer-threejs-lodpackage.
Package: Renderer ThreeJS Core
[0.1.0] - 2025-04-24
Added
- Initial release of the core renderer package.
SceneManager: Manages Three.js Scene, Camera, and WebGLRenderer.AnimationLoop: Manages therequestAnimationFrameloop and callbacks.StateManager: Connects renderer components to@teskooano/core-statestores (simulationState,celestialObjectsStore).events: SharedEventEmitter3instance (rendererEvents).- Basic debug helpers (Grid, Origin Sphere) in
SceneManager. - Performance stats calculation in
AnimationLoop.