Version 0.1.0
Version 0.1.0
App: Teskooano
Section titled “App: Teskooano”- 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/
):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
).
Package: Core Math
Section titled “Package: Core Math”- 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
Section titled “Package: App Design System”[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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 intosrc/tokens.css
andsrc/styles.css
. - Responsive design adjustments using media queries in
src/styles.css
. - Export configuration in
package.json
forstyles.css
andcolors.css
.
Package: App Web APIs
Section titled “Package: App Web APIs”[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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
) forlocalStorage
andsessionStorage
with automatic JSON serialization/parsing. - Basic
enhancedFetch
wrapper for the native Fetch API. - Helper function
createWorker
for managing Web Workers. - Helper function
createAnimationLoop
for managingrequestAnimationFrame
loops. - Helper function
observePerformance
forPerformanceObserver
. - Helper function
observeMutations
forMutationObserver
. - 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$
) forrequestAnimationFrame
timestamps. - RxJS Observable (
fullscreenChange$
) for fullscreen state changes. - RxJS Observable factories (
observeIntersection$
,observeMutations$
,observePerformance$
,observeResize$
) as alternatives for Observer APIs.
Package: App Simulation
Section titled “Package: App Simulation”Changelog
Section titled “Changelog”All notable changes to the @teskooano/app-simulation
package will be documented in this file.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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.).
Package: Core State
Section titled “Package: Core State”Changelog
Section titled “Changelog”All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- Initial release of the core state management package.
- Foundation: Uses
nanostores
for reactive state management. - Core Stores:
celestialObjectsStore
: Map store for allCelestialObject
data (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
celestialFactory
to create initialCelestialObject
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 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
Section titled “Package: Core Physics”Changelog
Section titled “Changelog”All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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.
Package: Core Debug
Section titled “Package: Core Debug”Changelog
Section titled “Changelog”All notable changes to the @teskooano/core-debug
package will be documented in this file.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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/retrievingOSVector3
instances. - THREE.js vector debugging utilities (
three-vector-debug.ts
) for storing/retrievingTHREE.Vector3
instances. - Placeholder for celestial object debugging utilities (
celestial-debug.ts
).
Package: Data Types
Section titled “Package: Data Types”[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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.) inscaling.ts
for 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
Section titled “Package: Renderer ThreeJS”[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- Initial release of the Three.js renderer integrator package.
ModularSpaceRenderer
class facade for initializing and coordinating components fromcore
,visualization
,interaction
, andeffects
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.
Changed
Section titled “Changed”- Updated
README.md
andARCHITECTURE.md
to accurately reflect the package’s role as an integrator, correcting previous documentation that implied it contained all logic.
Package: Systems Procedural Generation
Section titled “Package: Systems Procedural Generation”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.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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
Section titled “Package: Systems Celestial”Changelog - @teskooano/celestial
Section titled “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
Section titled “[0.1.0] - 2025-04-24”- 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
).
- 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.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 onRingProperties
. - Uses
RingGeometry
andRingMaterial
with external shaders. - Includes basic lighting and parent body shadow casting on rings.
- Data-driven
- Particle Renderers (
renderers/particles/
): UsesTHREE.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
andCloudMaterial
. - 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.
Changed
Section titled “Changed”- 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.
- Added
Package: Renderer ThreeJS Visualization
Section titled “Package: Renderer ThreeJS Visualization”Changelog
Section titled “Changelog”All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”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
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.
- Integrates specialized renderers from
OrbitManager
: Manages orbit visualizations.- Supports
Keplerian
mode (static ellipses) andVerlet
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.
- 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-state
for driving updates. - Architecture Update: Refactored to export individual managers (
ObjectManager
,OrbitManager
,BackgroundManager
) instead of a single facade class.
Package: Renderer ThreeJS Interaction
Section titled “Package: Renderer ThreeJS Interaction”Changelog
Section titled “Changelog”All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”ControlsManager
: ManagesTHREE.OrbitControls
for camera interaction (zoom, pan, rotate).- Smooth Transitions: Implemented GSAP-based animations for
moveToPosition
,pointCameraAtTarget
, andsetFollowTarget
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 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:
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
).
Package: Renderer ThreeJS Effects
Section titled “Package: Renderer ThreeJS Effects”Changelog
Section titled “Changelog”All notable changes to this project will be documented in this file.
[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- 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 usingTHREE.LOD
.- Helper functions in
lod-manager/
for building LOD meshes, calculating distances, and debug visualization.
Package: Renderer ThreeJS Core
Section titled “Package: Renderer ThreeJS Core”[0.1.0] - 2025-04-24
Section titled “[0.1.0] - 2025-04-24”- Initial release of the core renderer package.
SceneManager
: Manages Three.js Scene, Camera, and WebGLRenderer.AnimationLoop
: Manages therequestAnimationFrame
loop and callbacks.StateManager
: Connects renderer components to@teskooano/core-state
stores (simulationState
,celestialObjectsStore
).events
: SharedEventEmitter3
instance (rendererEvents
).- Basic debug helpers (Grid, Origin Sphere) in
SceneManager
. - Performance stats calculation in
AnimationLoop
.