AstroViewer Version Archive
INFORMATION
Die nachfolgende Liste enthält Informationen zu allen älteren archivierten Versionen des AstroViewers.
VERSION HISTORY ARCHIVE
- Fix: Hilfe-Panel war als DOM-Child des Control-Panels eingebettet statt als eigenständiges Body-Element – Panel wird jetzt korrekt auf Szenenebene gerendert.
- Fix: Hilfe-Panel zeigte nur „●"-Punkte statt Icons – SVG-Grafiken werden jetzt direkt als inline-SVG (18×18) in die Tabelle übernommen.
- Fix: Texte im Hilfe-Panel reagierten nicht auf Sprachänderung –
applyLang ruft jetzt direkt _helpPanelRefresh auf.
- Fix: Screenshot-Button zurück in Sektion 4 neben Kamera-Speed verschoben (war versehentlich in Sektion 1); „?"-Button belegt nun die frei gewordene Stelle in Sektion 1.
- Feature: Neuer „?"-Button in Sektion 1 des Control-Panels (Tooltip: „Hilfe / Help"). Öffnet ein verschiebbares Info-Panel (gleicher Stil wie die anderen Panels, kein Leader, weit im Vordergrund) mit einer Liste aller aktuell sichtbaren Buttons: Symbol und Tooltip-Text in der gewählten Sprache.
- Das Hilfe-Panel aktualisiert seinen Inhalt automatisch bei Carousel-Navigation (Pfeil-Buttons und Swipe) und zeigt stets die Buttons der gerade sichtbaren Sektionen.
- Toggle-Verhalten: Der Button schaltet das Panel ein/aus. Das Panel schließt auch per X-Button und setzt den Toggle-Zustand zurück. Sprachchange aktualisiert den Inhalt sofort.
- Fix: Eigendrehung des Planeten im Surface Mode wurde nicht gedrosselt – der Planet drehte sich mit voller Simulationsgeschwindigkeit unter der Kamera weg. Beim Aufruf von
applyRotation für den Hauptplaneten fehlte die Übergabe des Surface-Mode-Flags (bei Monden und Doppelsternen war es korrekt).
- Fix: Beim Zoom auf einen Nachbarstern erschienen kurzzeitig farbige Kreisartefakte auf dem Bildschirm. Ursache: Alle Zoom-Sprites aller Nachbarsterne waren gleichzeitig in der 3D-Szene, auch wenn sie unsichtbar sein sollten. Beim Zoom wird jetzt nur noch der Sprite des Ziel-Sterns in die Szene geladen; alle anderen werden vorher entfernt.
- Fix: Zoom-Sprite-Textur auf hochauflösenden Mobile-Displays (hoher DPI) zeigte Gradient-Banding. Canvas-Auflösung passt sich jetzt dem Device Pixel Ratio an, und der Gradient hat mehr Übergangsstufen für weicheres Ausblenden.
- Fix: Im Surface Mode war es möglich, durch Klick auf einen Nachbarstern (Dot, Name-Label oder Distanz-Label) den Surface Mode zu verlassen – alle drei Handler prüfen jetzt
_surfaceMode.
- Fix: Gleiches Problem auf Mobile: Tap auf ein beliebiges Objekt-Label hat den Surface Mode verlassen –
makeLabel-Handler blockt jetzt in Surface Mode.
- Fix: Nachbarstern-Zoom-Effekt auf Mobile zeigte kurzen weißen Lichtblitz – Sprite-Größe auf Mobile halbiert und Fade-in verlangsamt.
- Code-Modularisierung: Transversale Utility-Funktionen in separate Datei
js/utils.js ausgelagert (ES6-Module). Betrifft Orbit-Geometrie, Sternradius-Berechnung, Koordinatenumrechnung, Spektralfarben und weitere allgemeine Hilfsfunktionen.
- Fix: Sprachauswahlbutton funktioniert nicht mehr wegen Modularisierung
- Surface View: Änderung Labels im Modus eingeblendet zu lassen ist verloren gegangen, wieder eingebaut
- Nachbarstern-Labels/-Dots werden jetzt korrekt verdeckt, wenn ein näher gelegenes Objekt (Planet, Stern, Mond etc.) vor ihnen liegt – Occlusion-Prüfung im Animate-Loop ergänzt.
- Surface View: Atmosphären-Skalierung robuster – nutzt Bounding Sphere als Fallback wenn geometry.parameters nicht verfügbar.
- Surface View: Beim Verlassen wird Blickrichtung korrekt übernommen (kein 180°-Flip mehr).
- Surface View: Atmosphären- und Wolkenmeshes werden nicht mehr ausgeblendet, sondern auf r×1.01 verkleinert – Wolken sind als Bodenbelag sichtbar, Kamera bei r×1.03 schaut darüber hinweg.
- Surface View: Glow-Meshes (BackSide) werden versteckt – behebt Loch-Artefakt bei Merkur.
- Surface View: Kamera-Höhenfaktor auf 1.03 gesetzt (dicht über der Oberfläche).
- Surface View: FOV von 75° auf 50° reduziert – reduziert die Verzerrung des Horizontbogens an den Seiten.
- Surface View: Beim Verlassen wird die Blickrichtung korrekt beibehalten (kein 180°-Flip mehr).
- Surface View: Atmosphären-/Glow-Meshes werden im gesamten Pivot-Subtree versteckt (behebt Loch-Artefakt bei Merkur).
- Surface View: Kamera steht jetzt oben auf dem Planeten (Welt-Y-Achse als Standfläche), schaut in die horizontale Blickrichtung der ursprünglichen Kamera. Planetenoberfläche unten, Weltall oben.
- Surface View: Kamera-Abstand vom Planeten auf 2× Radius gesetzt (statt 1.05×) – der Planet war vorher so nah dass er das gesamte Sichtfeld ausfüllte. Jetzt sieht man die Planetenkrümmung als Horizont unten und das Weltall oben.
- Surface View: Blickrichtung endlich korrekt – Kamera schaut vom Planeten weg ins Weltall (Sonne/Sterne sichtbar), Planetenoberfläche erscheint als Boden unten im Bild. Kamera steht auf der dem Betrachter zugewandten Seite des Planeten.
- Surface View komplett neu: Kamera-Up ist fix (0,1,0) — kein Roll, keine Schräglage. Blickrichtung in reinen Weltkoordinaten (identisch zur Free-Cam). Beim Eintritt schaut man direkt vom Planeten weg, horizontal.
- Surface View Orientierung: Yaw/Pitch jetzt in Weltkoordinaten statt Tangentialrahmen — Orbits bleiben horizontal, keine Schräglage. Eintritt übernimmt
focusRotY direkt als horizontale Blickrichtung, Pitch startet bei 0° (Horizont).
- Surface View Orientierung: Up-Vektor ist jetzt die Oberflächennormale senkrecht zur Blickrichtung — Horizont bleibt stabil, kein Kamera-Roll beim Drehen. Eintrittsrichtung wird aus der aktuellen Kamera-Blickrichtung (negiert) korrekt auf Yaw/Pitch projiziert.
- FOV auf 75° im Surface-Modus (natürlicheres Sichtfeld), Near-Clip bleibt 0.01; beides wird beim Verlassen wiederhergestellt.
- Mesh-Segmente auf 256×256 erhöht für glatteren Horizont bei kleinen Objekten.
- Rotations-Cap direkt auf Delta (max ~1°/s) statt auf Speed — funktioniert unabhängig von Simulationsgeschwindigkeit und Rotationsperiode.
- Surface View: Kamera-Orientierung komplett neu — standard First-Person-Ansatz mit Weltvertikale als Oben-Referenz; Horizont ist jetzt stabil waagerecht.
- Near-Clip-Plane wird beim Eintritt auf 0.01 reduziert (statt 0.1) damit die Planetenoberfläche nicht weggeschnitten wird; wird beim Verlassen wiederhergestellt.
- Eigendrehung des Planeten im Surface-Modus auf ein sehr langsames Minimum gedrosselt.
- Surface View: Horizont-Ausrichtung korrigiert – Kamera-Up ist jetzt immer die Oberflächennormale (lokaler Zenit), der Horizont bleibt unabhängig vom Blickwinkel waagrecht.
- Mesh-Qualität: Objekt-Lookup jetzt über
_name statt Positions-Vergleich; Planet-Mesh wird zuverlässig auf 128×128 Segmente hochgesetzt.
- Surface View: Button korrekt deaktiviert wenn kein Objekt fokussiert ist (auch beim Systemladen).
- Startorientierung vereinfacht: Horizont direkt vor dem Benutzer, stabile Ausrichtung unabhängig von Kameraposition.
- Planet-Mesh wird bei Eintritt auf 128×128 Segmente hochgesetzt und Atmosphäre ausgeblendet – bei Verlassen wird beides wiederhergestellt.
- Drag-Steuerung korrigiert: nach unten ziehen schaut jetzt korrekt nach unten (war invertiert).
- Surface View Bugfixes: Tooltip korrigiert (war i18n-Key statt Text); Button ist nur aktiv wenn ein Planet/Mond fokussiert ist.
- Startorientierung wird jetzt aus der aktuellen Kamerarichtung abgeleitet statt immer in dieselbe Richtung zu zeigen; Roll ist im Surface-Modus aktiviert.
- Kamerahöhe erhöht (1.12×) damit Polygon-Kanten kleiner Objekte nicht am Horizont sichtbar sind; Pitch-Clamp auf strikt ≥0° (kein Blick unter die Oberfläche).
- Neuer Surface View Modus: Ein neuer Button (Horizont-Icon) versetzt die Kamera direkt auf die Planetenoberfläche. Man schaut vom Planeten aus ins Universum. Kamerabewegungen drehen nur die Blickrichtung, Zoom ist deaktiviert. Erneuter Klick kehrt zur normalen Fokus-Ansicht zurück.
- Screenshot-Button in Sektion 1 (neben dem Zurück-Button) verschoben; Surface-Button belegt die ursprüngliche Screenshot-Position in Sektion 2.
- Drei weitere SVG-Icons aus dem HTML in die externe icons.svg ausgelagert: neues
icon-stop (Stopp-Quadrat) hinzugefügt; Record-, Play- und Fullscreen-Button tauschen ihre Icons jetzt sauber per use href-Attribut statt per innerHTML-Zuweisung.
- Konsolidierung: Doppeltes
display:none im Script-Play-Indikator entfernt; doppeltes class-Attribut am Slider-Button korrigiert (fehlende CSS-Klasse wiederhergestellt); falschen HTML-Kommentar berichtigt.
- Redundante Variable
_synSKY_R in der Nachbarstern-Zoom-Logik entfernt (war identisch mit SKY_R).
- Toter Code entfernt:
_recActionStart-Tracking wurde befüllt aber nie gelesen; doppelter Aufruf von showAstroObjectInfo im Sway-Branch von focus-object.
- Shadowing des globalen
sys in _linMinPlanetDist und _getLinDistFactor behoben (lokale Variable in curSys umbenannt); Shadow der globalen Funktion W() im Carousel-IIFE behoben (_secWidths).
- Ungenutzte Variablen
inactiveStyle und activeStyle im Vergleichsmodus entfernt.
let seq → const seq; vergessener harter Zoom-Floor in setFocus (AutoZoom-Pfad) nachgezogen (war in V5.28 an anderen Stellen bereits korrigiert).
- Zoom-Minimum beim Fokussieren von kleinen Objekten (Monde, Asteroiden) korrigiert: Der harte Zoom-Floor von 0.1 griff bei kleinen Objekten zu früh und verhinderte das Heranzoomen an die Oberfläche. Der Minimalzoom skaliert jetzt proportional zur Objektgröße, sodass man bei allen Objekten gleich nah heranzoomen kann.
- Neuer Script-Befehl
set-timer { seconds }: Startet einen grünen Countdown (mm:ss) neben der Script-Anzeige links oben. Wird im Script erneut aufgerufen, springt der Timer auf den neuen Wert. Nach Ende des Playbacks verschwindet er automatisch.
- Neuer Script-Befehl
hide-timer: Blendet den Countdown-Timer sofort aus.
- Bugfix Compare aus Systemübersicht: Angezeigter Name war der Systemname (z.B. „Sirius-System") statt des Sternnamens –
_cmpEnrichOverviewTgt setzt jetzt name korrekt auf den primären Sternnamen.
- Crosshair-Schwenk: Zielwinkel wird jetzt mit echtem Three.js-Projektion (
Vector3.project(camera)) per Binärsuche gelöst statt einer selbst berechneten Näherung – jeder Stern landet konsistent im oberen Bildviertel.
- Crosshair-Schwenk: Zielposition wird jetzt per Binärsuche auf einen fixen NDC-Y-Wert (+0.25, oberes Viertel) gelöst – jeder Stern landet exakt an derselben relativen Bildschirmposition, unabhängig von Elevation, Entfernung oder Zoom.
- Crosshair-Schwenk: Offset wird jetzt nach dem Winkel-Clamp angewendet – bei südlichen Sternen (wie Alpha Centauri) greift der Clamp nicht mehr das Offset weg, alle Sterne landen konsistent im oberen Bilddrittel.
- Crosshair-Kameraschwenk: Zielpunkt liegt jetzt leicht unterhalb der Bildmitte, sodass der markierte Stern nicht exakt hinter Sol zu liegen kommt.
- Crosshair-Kameraschwenk vertikal korrigiert: Zielwinkel wird jetzt über
asin(sp.y / |sp|) berechnet, was der tatsächlichen Kameraformel entspricht – Sterne werden nun auch vertikal exakt zentriert.
- Compare-Playback aus der Systemübersicht repariert:
compare-select sucht bei fehlendem planetData jetzt zusätzlich in overviewObjects und reichert den Treffer über _cmpEnrichOverviewTgt an.
- Crosshair-Kameraschwenk: vertikaler Zielwinkel wird jetzt exakt auf den Stern ausgerichtet (kein Dämpfungsfaktor mehr) – Sterne ober- oder unterhalb des Horizonts werden korrekt ins Bild gedreht.
- Neuer Befehl
hide-crosshair: entfernt das Crosshair und deaktiviert den „Zum System"-Button. Wird automatisch ausgeführt wenn der Größenvergleich in der Systemübersicht gestartet wird.
- Crosshair: Größe passt sich jetzt dynamisch der Kameradistanz an (konstante Bildschirmgröße beim Zoomen). Kamera-Schwenk-Zielwinkel wird auf sichtbaren Bereich geclampt, sodass der Stern immer im Bild bleibt.
- Auto-Zoom-Schalter aus der Systemübersicht entfernt (Button deaktiviert); Einflug-Animation läuft immer.
- Compare-Modus in der Systemübersicht repariert: Klick auf einen Stern löst jetzt korrekt die Objektauswahl aus statt sofort den Systemzoom zu starten.
- Bugfix:
const d fehlte nach dem neu eingefügten Kamera-Lerp-Block in animate() – führte zu ReferenceError: d is not defined und verhinderte das Laden der Systemübersicht.
- Crosshair-Navigation: Kamera schwenkt jetzt sanft zum ausgewählten Stern (kein harter Sprung mehr).
- Crosshair-Auswahl wird in der Action-Aufzeichnung erfasst (
set-crosshair { system-key }); „Zum System"-Button nutzt ebenfalls zoom-overview-to für konsistentes Recording.
- Auto-Zoom-Schalter funktioniert jetzt auch im Overview: deaktiviert → System wird direkt geladen, keine Einflug-Animation (gilt für Stern-Klick, Crosshair-Navigation und
zoom-overview-to-Action).
- Compare: Bugfix für Übersichtsmodus – Sterne können jetzt korrekt ausgewählt werden; nach dem Schließen kehrt die Ansicht zur Systemübersicht zurück.
- log/lin-Schalter ist in der Systemübersicht deaktiviert (Sternpositionen sind immer linear nach echten Lichtjahrwerten platziert).
- Label-Schalter funktioniert jetzt korrekt in der Übersicht – der Animate-Loop respektiert
showLabels statt es jedes Frame zu überschreiben.
- Crosshair in der Systemübersicht: Farbe auf AstroViewer-Grün geändert, Ring etwas größer, vier Tick-Linien oben/unten/links/rechts ergänzen den Ring zum echten Crosshair-Look.
- „Zum System"-Button zeigt jetzt einen nach rechts zeigenden Pfeil (spiegelverkehrt zum Zurück-Button).
- Bugfix: Fehlende schließende Klammer in
animate() nach dem Einbau des Crosshair-Billboard-Hooks (V5.13) führte zu einem Syntax-Fehler beim Laden.
- Pause, Schattenseite, Habitable Zone, Planeten- und Mondgeschwindigkeit sind in der Systemübersicht deaktiviert (wie während der Script-Wiedergabe).
- Orbit-Linien-Schalter steuert in der Übersicht, ob Distanz-Verbindungslinien beim Hovern/Auswählen angezeigt werden.
- Label-Schalter blendet in der Übersicht die Sternbezeichnungen ein oder aus.
- Controlpanel ist jetzt auch in der Systemübersicht sichtbar (standardmäßig eingeblendet, kann wie gewohnt ausgeblendet und per Restore-Button zurückgeholt werden).
- Sektion 1 zeigt in der Systemübersicht neue Navigations-Buttons: Mit ‹ und › wird ein Crosshair-Ring (3D-Torus) von Stern zu Stern gesetzt, die Kamera schwenkt dabei sanft zur Auswahl. Der „Zum System"-Button lädt das markierte System – mit Zoom-Animation oder direkt, je nach Auto-Zoom-Einstellung.
- Auto-Zoom-Schalter steuert jetzt auch in der Systemübersicht, ob die Einflug-Animation abgespielt wird oder das System direkt geladen wird.
- Größenvergleich funktioniert jetzt auch in der Systemübersicht: Zwei Sterne anklicken startet den Vergleich, nach dem Schließen kehrt die Ansicht zur Übersicht zurück.
- Verdeckungsprüfung für Labels überarbeitet: Statt eines geometrischen Strahltests im 3D-Raum (der bei nah platzierten oder großen Körpern unzuverlässig war) wird nun ein Screenspace-Vergleich verwendet – das Label wird ausgeblendet, sobald es innerhalb des projizierten Bildschirmradius eines näheren Körpers liegt. Die Prüfung gilt jetzt für alle soliden Objekte (Sterne, Planeten, Monde, Zwergplaneten, Asteroiden), nicht mehr nur für Sterne.
- Labels von Objekten die sich hinter einem Stern befinden werden jetzt ausgeblendet. Der Check läuft per Frame in
positionLabel() gegen alle Stern-Meshes des aktuellen Systems (geometrische Strahltest, kein Raycaster-Overhead). Der Stern selbst und Objekte die näher als der Stern sind bleiben davon unberührt.
- Bugfix Linearansicht: Die Habitable Zone wurde nicht mit demselben Streckfaktor wie Planetenorbits skaliert – beim Umschalten log/lin lagen deshalb andere Planeten optisch in der HZ als tatsächlich. HZ-Radien werden jetzt über
visDist() berechnet und sind damit konsistent mit den Planetenorbits.
- Bugfix Linearansicht: Proportionaler Streckfaktor nutzte fälschlicherweise den bereits skalierten Anzeigewert statt der Roh-AU-Distanz – Planeten lagen dadurch wieder im Stern. Berechnung basiert jetzt korrekt auf
_rawDistAU; Cache wird zusätzlich bei Log/Lin-Umschaltung invalidiert.
commands.json: Fehlende Parameter x, y, width, height beim screenshot-Befehl ergänzt – werden jetzt im Script-Editor vorgeschlagen.
- Bugfix Linearansicht: Planeten enger beieinander liegender Systeme (z.B. Barnard's Stern) landen nicht mehr alle auf demselben Orbit – alle Abstände werden jetzt proportional gestreckt, sodass der innerste Planet knapp außerhalb des Sterns bleibt und die relativen Abstände erhalten bleiben.
- Bugfix Playback: Ein Watchdog erkennt hängende Aktionen (Promises die nie abgeschlossen werden) und setzt das Playback nach 12 Sekunden automatisch fort.
screenshot: Neue Parameter x, y, width, height (alle optional, Standard: gesamte Ansicht) – damit kann ein beliebiger Ausschnitt des Bildschirms gespeichert werden.
- Bugfix Linearansicht: Planeten um große M-Sterne (Barnard, Wolf 359, Lacaille 9352) lagen teilweise innerhalb des Sterns – der Mindestorbitabstand passt sich jetzt dynamisch der Sterngröße an.
- Bugfix EZ Aquarii: Sterne A und C waren zur Hälfte ineinander – hardcodierte Orbitradien an neue Sterngröße angepasst (A: 5→14, C: 7→28).
- Bugfix
screenshot Playback: Der Playback-Input-Block hat fälschlicherweise auch den programmatischen Download-Click des Screenshot-Links abgefangen und verhindert. Download-Anchors werden jetzt explizit vom Block ausgenommen.
- Bugfix
screenshot Playback: Screenshots werden jetzt zuverlässig gespeichert – der Vollbild-Schritt wird während der Wiedergabe übersprungen, da er einen Benutzer-Klick voraussetzt und das Playback sonst einfriert.
commands.json: Fehlende Befehle ergänzt: navigate-system, open-slider, screenshot, set-fullscreen, show-ui; Parameter languageCode und autoWait bei show-message nachgetragen.
commands.json: Parameternamen auf korrekte camelCase-Schreibweise korrigiert (camMode, inFocus, focusPanX/Y) – Folgefehler aus V4.99.
- Bugfix Playback: Parameter-Keys in Script-Befehlen werden beim Parsen nicht mehr auf Lowercase umgewandelt – nur Command-Keys (z.B.
camera-roll) sind case-insensitiv, nicht aber Parameternamen wie camMode oder inFocus. Behebt fehlerhafte Kameraposition/-rotation bei Wiedergabe im Fokus-Modus.
- Bugfix Playback: Kamera-Drag (Drehen, Rollen, Schwenken) während der Wiedergabe funktioniert wieder korrekt – der globale Eingabe-Block hatte fälschlicherweise auch Mausklick-Start-Events abgefangen und damit alle aufgezeichneten Drag-Aktionen verhindert.
- Verlorengegangene Features aus vorherigen Version wieder hinzugefügt.
- Materiazusammensetzung von Charon (New Horizons), Dysnomia (ALMA/GAIA Dichtemessungen), Na'maka und Hi'iaka (Keck-Observatorium) hinzugefügt
- Bugfix
camera-zoom Playback: Zoom-Faktor wird jetzt als Velocity-Impuls angewendet (wie beim echten Mausrad), sodass die gedämpfte Animation identisch zur Aufzeichnung abläuft – vorher waren Start- und Endzoom beim Playback falsch
- Bugfix
focus-neighbour Playback: endAction feuert jetzt erst nachdem load-system vollständig abgeschlossen ist – verhindert das sporadische Steckenbleiben bei zwei aufeinanderfolgenden focus-neighbour-Aktionen; gleiches Fix für zoom-overview-to
neighbour-zoom: Animation komplett überarbeitet – Three.js-Sprite mit perspektivischer Größenzunahme statt 2D-Canvas-Dot
- Script-Playback: Hover-Distanzlinien in der Übersicht, Mausrad-Zoom und Objekt-Klicks während eines laufenden Scripts deaktiviert
- Script-Befehle und Parameter sind jetzt case-insensitiv:
Show-Message, autoWait, autowait etc. werden gleich behandelt
- GUI-Icons aus der HTML-Datei in
icons.svg ausgelagert: Play-Indicator, Automation-Gruppe, Record, Play, Script-Gruppe, Script-Editor
show-message: Standard-Y 82 px, neuer Parameter languageCode und autoWait
focus-object sequence:sway/all: komplett neu konzipiert – die Kamera bleibt während des Schwenks an ihrer Position und dreht nur die Blickrichtung (lookAt-Interpolation) vom alten zum neuen Ziel; bei all folgt danach Phase 2 mit Zoom zur Zieldistanz; kein Orbit-Koordinatensystem während der Schwenkanimation
- Bugfix
focus-object sequence:sway/all: swayStart liest jetzt direkt camera.position (nicht neu berechnet), sodass kein Frame-Timing-Sprung entsteht; Zielposition wird über focusOrbitalPos korrekt berechnet; focusRotX/Y werden während der Animation interpoliert (kürzester Weg); all interpoliert Zoom gleichzeitig zur Zieldistanz
focus-object sequence:sway/all: komplett neu implementiert als eigener Kamera-Mode sway-lerp – die Kamera bewegt sich jetzt in Weltkoordinaten von der aktuellen Position zur Orbit-Position um das neue Ziel (smoothstep, CAM_SPEED-abhängig); bei all wird der Zoom dabei gleichzeitig zur Zieldistanz interpoliert; zuvor war der Impuls-Ansatz nicht funktionsfähig weil focusRotX/Y objektrelative Winkel sind, kein globales Koordinatensystem
- Bugfix
focus-object sequence:sway/all: grundlegend überarbeitet – Impuls wird jetzt korrekt aus der Focus-Orbit-Position berechnet (nicht camera.position), und skaliert mit delta × (1 − CAM_DAMPING) sodass die gedämpfte Gesamtdrehung genau dem Winkelunterschied entspricht; sequence:all ruft nicht mehr setFocus() auf (das löschte den Impuls), sondern setzt Zoom und Orbit-Farben direkt
- Bugfix
focus-object sequence:sway/all: Kamerawinkel werden jetzt vor dem Fokuswechsel gesichert und nach der Impulsbrechnung explizit wiederhergestellt – Schwenk war zuvor unsichtbar weil Delta ≈ 0
- Playback-Indikator: kleines Play-Symbol mit "Script"-Label erscheint links oben während ein Script läuft, auf allen Screens sichtbar
- Belt-Texturen (Asteroidengürtel, Kleinkörpergürtel, Trümmergürtel) werden jetzt mit deterministischem Seeded-RNG erzeugt und pro System/Zone gecacht – kein sichtbares Flimmern mehr beim Replay
- Bugfix
focus-object sequence:sway/all: Sway-Impuls wird jetzt aus der tatsächlichen Kameraposition zur neuen Zielposition berechnet – funktioniert zuverlässig unabhängig vom vorherigen Fokus-Objekt
show-message: Standard-Y-Position etwas tiefer gesetzt für besseres Spacing unter der Titelleiste
- Init-Script speichert jetzt die Panel-Positionen auch dann, wenn die Panels nicht manuell verschoben wurden – damit werden
move-panel-Bewegungen im Playback korrekt von der tatsächlichen Startposition aus reproduziert
- Script-Editor: Befehlsliste aktualisiert sich sofort nach Verwendung eines Befehls per Doppelklick (zuletzt verwendete Befehle erscheinen direkt oben)
- Carousel: aktive Sektion wird beim Start des Playbacks gespeichert und nach Ende oder Abbruch wiederhergestellt
- Bugfix
focus-object sequence:sway/all: Sway-Impuls verwendete fälschlicherweise camera.position statt focusRotX/Y zur Winkelberechnung; Ergebnis war zufällig und abhängig vom letzten gerenderten Frame; Berechnung nutzt jetzt die Fokus-Winkel direkt
go-overview { instant: true }: überspringt die Zoom-Out-Animation und lädt die Übersicht sofort – ideal als erste Zeile eines gescripteten Ablaufs
- Bugfix
move-panel auf Mobile: _panelDragPos wird jetzt vor dem Setzen von style.left/top gesetzt, sodass nachfolgende _positionInfoPanel()-Aufrufe die gescriptete Position korrekt beibehalten
- Script Editor Mobile: Befehlsliste ausgeblendet (kein Doppelklick möglich), Schriftgröße des Scriptcodes auf 10px verkleinert, iOS-Auto-Zoom beim Fokus verhindert
- Script Editor Desktop: Befehlsliste auf 280px verbreitert; zuletzt verwendete Befehle erscheinen oben in der Liste (grün hervorgehoben), getrennt durch eine Linie; Reihenfolge wird in
localStorage gespeichert
show-message: sinnvolle responsive Standardwerte – ohne explizite Position/Größe erscheint das Label zentriert unterhalb der Titelleiste in der Breite des Control-Panels (min(600px, vw-48px)); Schriftgröße skaliert mit clamp für Mobile; Mindesthöhe für ~3 Zeilen
focus-object: Parameter noZoom ersetzt durch sequence mit vier Modi: zoom (Standard, bisheriges Verhalten mit Lerp-Animation), none (sofort ohne Animation, für Init-Scripts), sway (Kamera rotiert mit Impuls auf das Zielobjekt hin, kein Zoom – Stärke folgt der eingestellten Kamerageschwindigkeit), all (Sway-Impuls + anschließende Zoom-Animation); noZoom:true wird als Fallback weiterhin als sequence:none interpretiert
focus-object: Defaults für panel2 und panel3 auf true korrigiert (waren fälschlicherweise false in der Dokumentation)
- System-Key-Fallback:
load-system, zoom-overview-to und focus-neighbour akzeptieren jetzt sowohl sol als auch sol-system – fehlende oder überzählige -system-Suffix werden automatisch ergänzt bzw. gestripped
- Neuer Befehl
show-panels { panel1, panel2, panel3 }: blendet Infopanels für das aktuell fokussierte Objekt ein; ist kein Objekt fokussiert, passiert nichts
- Bugfix
camera-zoom: Faktor wurde bisher als Velocity-Impuls interpretiert, was durch die Dämpfung zu unkontrollierbaren Zoom-Weiten führte; wird jetzt direkt als Multiplikator auf focusZoom angewendet – factor: 2.0 verdoppelt den Abstand, factor: 0.5 halbiert ihn
- Neuer Script-Befehl
loop-next { repeats, commands }: wiederholt die nächsten commands Zeilen repeats-mal; Playback-Engine nutzt jetzt einen Index-Pointer statt for…of, sodass Rücksprünge möglich sind; Schleifen können verschachtelt werden
- Neuer Script-Befehl
show-message { id, text, x, y, width, height }: blendet ein transparentes Textlabel an beliebiger Position ein (Untertitel-Funktion); Fade-In über 0,55 s; mehrere Labels mit unterschiedlichen IDs gleichzeitig möglich
- Neuer Script-Befehl
hide-message { id }: blendet ein per ID referenziertes Label mit Fade-Out aus; beim Stopp des Playbacks werden alle offenen Labels automatisch entfernt
- Script Editor: Titelschrift korrigiert – verwendet jetzt explizit Arial wie der Rest der App, nicht Monospace
- Script Editor: Render-Loop wird jetzt wirklich gestoppt –
animate() kehrt direkt zurück solange der Editor offen ist; kein unnötiges Rechnen im Hintergrund mehr
- Script Editor: Befehlsliste vervollständigt (
camera-pan, camera-roll, camera-rotate, show-connections, zoom-overview-to ergänzt) und alphabetisch sortiert
- Script Editor: alle UI-Texte lokalisiert über
languages.json
- Neue Datei
commands.json (/data/commands.json): alle Befehle mit Beschreibung (de/en), Parameternamen, Standardwerten und Hinweisen; wird beim ersten Öffnen des Editors geladen und gecacht
- Bugfix:
focus-object im Init-Script löste Auto-Zoom-Animation aus – neuer Parameter noZoom: true setzt Kamera direkt ohne Lerp; wird im Init-Script automatisch gesetzt
- Bugfix: Infopanels verschwinden beim Kameraschwenk nicht im Playback – das automatische Ausblenden wird jetzt als
hide-panels-Aktion ins Script geschrieben und im Playback korrekt wiedergegeben
- Script Editor: Titel im selben Stil wie „Systemübersicht" (Großbuchstaben, light weight)
- Script Editor: Buttons breiter und korrekt layoutet, kein Textüberlauf mehr
- Script Editor: Render-Loop wird während der Editor offen ist gestoppt (statisches Sternenbild), kein Zoom mit dem Mausrad möglich
- Script Editor: Block-Bezeichnung im Leerscript heißt jetzt
// -- SCRIPT -- statt // -- RECORDING --
- Script Editor: rechte Sidebar mit allen unterstützten Befehlen; Doppelklick fügt eine Template-Zeile mit allen Parametern und Standardwerten an der Cursorposition ein
- Script Editor: komplett neues Layout – öffnet sich als eigene Vollbild-Szene mit Sternenhintergrund; Titel zeigt „Astro Script Editor"; Simulation wird pausiert; Textfeld füllt den gesamten vertikalen Raum; Abbrechen/OK-Leiste am unteren Rand im Controlpanel-Stil
- Bugfix Script Editor: beim Öffnen ohne vorhandenes Recording erschien
// -- RECORDING -- doppelt im Scripttext
- Bugfix: Record-Button blieb nach Playback-Ende ausgegraut – er wurde fälschlicherweise vom selben Dimm/Restore-Loop erfasst wie alle anderen Buttons; er wird jetzt wie der Stop-Button separat behandelt
- Neuer Button „Script Editor": öffnet ein Textfeld mit dem letzten Recording (oder dem aktuellen Init-Zustand falls kein Recording vorhanden); Änderungen können übernommen oder verworfen werden; Button ist während Playback deaktiviert
- Playback-Sperre: Während ein Script abgespielt wird können keine Buttons oder UI-Elemente vom Benutzer ausgelöst werden – alle Panel-Buttons werden gedimmt und Klicks/Touches werden in der Capture-Phase geblockt; nur der Stop-Button bleibt aktiv; Script-Aktionen laufen weiter ungestört
- Bugfix:
compare-show-panel – Label-Klick im Compare-Overlay hat nichts bewirkt weil Panel-Click-Handler erst runAction (→ Proxy → setCmpFocus) aufrief und dann sofort nochmal direkt setCmpFocus mit dem bereits geänderten cmpFocusTgt – was den ersten Aufruf sofort wieder rückgängig machte; doppelte direkte Aufrufe entfernt
- Bugfix: Objekt-Labels haben jetzt
pointer-events:auto und eigene Click/Touch-Handler – Klicks auf Labels funktionieren jetzt direkt (auch im Compare-Auswahlmodus), statt nur über das dahinterliegende 3D-Mesh
- Bugfix:
focus-neighbour Playback – im Playback war der Zielstern unsichtbar weil kein Mesh/Canvas-Dot existierte; es wird jetzt ein temporärer Canvas-Dot mit korrekter Spektralfarbe erstellt der während der Zoom-Animation sichtbar wächst
- Bugfix:
focus-neighbour – Zoom-Animation fliegt jetzt 97% des Weges zum Stern, sodass er sichtbar größer wird; funktioniert für echte Nachbarsterne und Playback-Positionen gleichermaßen
- Bugfix:
compare-objects – Label-Klick im Compare-Auswahlmodus funktioniert wieder; Klicks werden jetzt direkt an setFocus weitergeleitet statt über focus-object
- Bugfix:
focus-object – key wird jetzt immer ins Script geschrieben; _tgt war ein interner Parameter der beim Serialisieren übersprungen wurde, sodass im Playback kein Objekt fokussiert wurde
- Bugfix:
wait – wird nicht mehr automatisch ins Script geschrieben; Playback wartet bereits durch await runAction(...) auf den Promise jeder Aktion; wait { ms } bleibt für manuell gescriptete Pausen verfügbar
- Deeplink: Fallback eingebaut –
/alpha-centauri findet jetzt auch Systeme mit dem Schlüssel alpha-centauri-system
- Bugfix:
set-pause – Semantik korrigiert: state: true = Pause an, state: false = Simulation läuft; alle Call-Sites (Button, Compare-Start/Ende, Init-Script) angepasst
- Bugfix:
focus-neighbour – Playback spielt die Zoom-Animation jetzt immer ab (auch aus Systemansicht heraus); synthetische Himmelsposition wird korrekt berechnet; System wird erst nach Abschluss der Animation geladen; interne load-system-Aufrufe verwenden durchgehend system-key statt numerischer ID
- Bugfix:
compare-show-panel – Parameter geändert von target: "small"|"big" zu obj: "<object-key>", konsistent mit anderen Compare-Aktionen; Playback löst Key intern auf Small/Big-Slot auf
- Bugfix:
set-pause – Log-Eintrag war invertiert (state=false beim Pausieren, state=true beim Fortsetzen); Verhalten war korrekt, nur Logging und Script-Ausgabe falsch
- Bugfix:
focus-neighbour – Playback spielt jetzt die Zoom-Animation vollständig ab, bevor das Zielsystem geladen wird; bei Playback aus einer Systemansicht wird direkt geladen (keine Übersicht verfügbar)
- Neu:
close-compare-panel – wird beim Schließen des Info-Panels im Vergleichsmodus ausgelöst und ist scriptbar
- Neu:
move-compare-panel { px, py } – wird beim Verschieben des Info-Panels im Vergleichsmodus aufgezeichnet
- Bugfix: Init-Script snapshottete Panels immer mit
panel1/2/3: true; es werden jetzt nur tatsächlich sichtbare Panels in der aufgezeichneten Init-Sequenz berücksichtigt, inklusive gespeicherter Panel-Positionen
- Bugfix:
set-pause repariert – state ist jetzt der gewünschte neue running-Wert: true = läuft, false = pausiert; keine Invertierung mehr
- Bugfix:
focus-neighbour – alle Aufrufpfade (starDot, distLabel, handleClick, _nbTgt) korrigiert; Variable-Shadowing-Bug im forEach behoben; system-key wird jetzt immer korrekt aufgelöst
- Bugfix: Zoom im Compare-Modus beeinflusst nicht mehr den Systemzoom – window wheel-Listener prüft jetzt
_cmpMode
- Bugfix:
compare-select zeigt keine Info-Panels mehr beim Playback der Objektauswahl
- Bugfix:
set-pause repariert – state: true pausiert, state: false resumiert; Button übergibt den aktuellen running-Zustand als Zielrichtung
- Screenshot: keine internen
runAction-Aufrufe mehr in _doScreenshot; neuer Parameter filename für benutzerdefinierte Dateinamen im Script
- Bugfix:
focus-neighbour löst jetzt den echten System-Key auf (nicht die numerische ID) – Scripting und Playback funktionieren korrekt
- Compare: Kamera-Impulse aus dem Playback werden über globale Proxy-Funktionen (
_cmpCamProxy) an die lokalen Compare-Kamera-Variablen weitergegeben
- Neue Aktion
compare-show-panel: wird beim Klick auf ein Objekt-Label im Vergleichsmodus aufgezeichnet (target: "small" | "big" | null)
- Bugfix:
set-pause loggt jetzt den korrekten Zielzustand (war bisher invertiert)
- Screenshot: interne State-Änderungen (Pause, UI ausblenden/einblenden) laufen jetzt über
runAction und erscheinen im Log; werden aber nicht ins Script geschrieben (Screenshot ist die aufzuzeichnende Aktion)
- Bugfix:
focus-neighbour schreibt system-key jetzt korrekt ins Script; beim Playback ohne internen Zielobjekt wird das System über den Key geladen
- Bugfix:
navigate-system übergibt system-key jetzt bereits vor runAction damit er korrekt geloggt und gescriptet wird – keine numerischen IDs mehr im Script
- Compare: Kamera-Aktionen im Vergleichsmodus werden separat aufgezeichnet (eigene Akkumulatoren auf dem Compare-Canvas) und beim Playback korrekt auf die Compare-Kamera angewendet
- Neue Aktion
compare-close: wird beim Schließen der Vergleichsansicht (Zurück-Button) ausgelöst und ist scriptbar
- Aktionssystem: Alle Toggle-Aktionen schreiben jetzt immer explizit
state: true/false ins Script statt eines blindem Toggle – Playback ist damit zustandsunabhängig
- Aktionsnamen vereinheitlicht nach verb-subject:
show-orbits, show-hz, show-labels, show-shadow, show-ui, show-connections, set-autozoom, set-pause, set-logscale, set-fullscreen, compare-objects, open-slider, focus-neighbour, deselect-overview, zoom-overview-to, close-panel, move-panel
- Alle systembezogenen Aktionen verwenden jetzt einheitlich
system-key (String) statt numerischer systemId
- Bugfix:
compare-objects loggt start und abort jetzt korrekt; Objekt-Auswahl wird als eigenständige compare-select { obj, slot } Aktion geschrieben – Compare-Replay funktioniert damit vollständig
- Recording: zwischen allen Aktionen wird automatisch ein
wait { ms } mit der echten Wartezeit des Benutzers geschrieben – Playback läuft jetzt im originalen Tempo
- Bugfix:
overview-zoom-to ruft load-system nicht mehr vor dem Zoom auf – Reihenfolge ist wieder korrekt: zuerst Zoom-Animation, dann System einblenden
overview-connections wird wieder aufgezeichnet (Show und Hide) – mit den inter-action waits funktioniert das wie eine Geisterhand die hoverd
compare-toggle: Steps heißen jetzt start, continue, show, abort – klarer und konsistenter
- Bugfix: Slider-UI (Position, Wert, Label) wird jetzt bei
set-speed, set-moonspeed, set-camspeed und set-zoom aktualisiert wenn der Slider gerade offen ist
- Bugfix:
load-system ist jetzt async (wartet einen Frame) – mehrfaches Laden in einem Script funktioniert jetzt korrekt hintereinander
- Bugfix:
navigate-system, focus-neighbour-star und overview-zoom-to unterdrücken den internen load-system-Aufruf im Recording – keine doppelten Einträge mehr
- Init-Script: Kamerawinkel (
rotX/Y, roll, Pan-Offsets) werden jetzt als set-camera-state mitgespeichert
overview-zoom-to löst jetzt korrekt load-system intern aus (war bisher ohne Aktion)
overview-connections wird nicht mehr aufgezeichnet (flüchtiger Hover-Zustand)
- Neues Konzept: Async-Aktionen schreiben beim Abschluss automatisch
wait { ms } ins Script – Playback pausiert so lange wie die Originalanimation gedauert hat
- Bugfix:
compare-toggle repariert – pick-2nd und show sind jetzt reine Log-Schritte ohne State-Seiteneffekte; Vergleichsmodus funktioniert wieder vollständig
- Kamera-Rotate und Roll: werden jetzt als eine zusammengefasste Aktion pro Drag-Geste aufgezeichnet (statt Dutzende Einzelframes); Zoom-Events auf max. 1 pro 150 ms gedrosselt
- Neue Aktion
panel-close: wird beim Klick auf ✕ eines Info-Panels aufgezeichnet
- Neue Aktion
panel-move: wird beim Drag-Ende eines Info-Panels mit Zielposition aufgezeichnet
- Aktionssystem:
focus-object loggt jetzt korrekt die Panel-Parameter (panel1/2/3) auch wenn alle auf Standard (true) stehen
- Neue Aktion
load-system: lädt ein System direkt per ID oder Key – wird intern von navigate-system und focus-neighbour-star ausgelöst und ist damit eigenständig scriptbar
- Record: Aufnahme beginnt jetzt mit einem Initialisierungs-Block (System, Toggles, Speeds, Zoom, Fokus) – Playback startet so immer vom gleichen Zustand
- Overview: Klick auf einen Stern löst jetzt
overview-zoom-to aus statt focus-object
overview-connections: Hover-Ende wird als { hide: true, trigger: "hover-end" } geloggt; im Recording wird nur der letzte aktive Hover gespeichert, das Beenden ist implizit
compare-toggle enthält jetzt immer einen step-Parameter: pick-1st, pick-2nd, show oder abort
- Kamera-Aktionen (
camera-zoom, camera-rotate, camera-roll, camera-pan) werden jetzt aufgezeichnet und beim Playback als Physik-Impulse wiedergegeben
- Bugfix: Slider-Panel schließt jetzt korrekt bei Klick auf andere Panel-Buttons (z.B. Compare → Zoom-Button funktioniert wieder)
- Bugfix: Kamera-State (Zoom, Rotation, Position) wird beim Öffnen von Compare gespeichert und beim Schließen exakt wiederhergestellt – Zoom-Änderungen im Vergleichsmodus wirken sich nicht mehr auf die Systemansicht aus
- Bugfix: Neighbour-Star-Klick über direkten Dot-Handler wird jetzt ebenfalls als Aktion geloggt (bisher wurde
setFocus direkt aufgerufen)
- Aktions-Log:
focus-object zeigt jetzt immer explizit panel1/panel2/panel3
- Neue Sektion im Steuerungspanel: Automatisierung (Symbol: A im Rechteck) mit Record- und Play-Button
- Record-Button (roter Punkt → Stopp-Quadrat): zeichnet alle Aktionen im Format
actionKey { param: "value" } auf; Kamera-Gesten werden nicht aufgezeichnet. Bei Stopp wird das Script in einem neuen Tab angezeigt
- Play-Button (Dreieck → Stopp-Quadrat): führt das zuletzt aufgezeichnete Script Zeile für Zeile aus, wartet auf async Aktionen; kann jederzeit gestoppt werden
- Record und Play schließen sich gegenseitig aus (jeweils anderer Button deaktiviert)
- Bugfix: Compare abbrechen und dann anderen Panel-Button klicken löste fälschlich Compare aus – Klick auf anderen Panel-Button bricht jetzt ausstehenden Compare-Vorgang sauber ab
- Bugfix: Fullscreen extern beenden (z.B. Esc) wird jetzt als
endAction('toggle-fullscreen') protokolliert
- Alle Kamera-Aktionen (
camera-zoom, camera-rotate, camera-roll, camera-pan) enthalten jetzt einen screen-Parameter (system / overview / compare)
- Distanzlinien in der Systemübersicht werden jetzt als
overview-connections geloggt – bei Hover (Desktop) mit trigger:"hover", bei erstem Tap (Mobile) mit trigger:"tap"
focus-object akzeptiert jetzt panel1, panel2, panel3 als Booleans – steuert welche Infopanels nach dem Fokussieren sichtbar sind (Standard: alle true)
focus-neighbour-star übergibt jetzt key (System-ID) als Parameter statt des internen Objekts
- Aktions-Log bereinigt: Objekte werden nur noch als Key-String geloggt, nicht mehr als ganzes Datenobjekt
- Bugfix: Klick auf Zoomfaktor-Button löste fälschlich Compare aus – Slider-Close-Listener prüft jetzt alle Panel-Buttons, nicht nur Slider-Buttons
- Bugfix: Fullscreen-Button löst jetzt Aktion aus (
toggle-fullscreen)
- Bugfix: Speed- und Moon-Speed-Slider crashten mit null-Fehler –
speedDisplay/moonSpeedDisplay sind jetzt null-safe
- Neue Aktionen:
focus-neighbour-star, overview-deselect, overview-connections, overview-zoom-to, toggle-fullscreen
- Neue Aktionen:
set-speed, set-moonspeed, set-camspeed, set-zoom, slider-open
- Beobachtungsaktionen für alle Mausgesten:
camera-zoom, camera-rotate, camera-roll, camera-pan – werden geloggt, Physik bleibt unverändert
- Slider-Input und Pan-Gesten feuern jetzt semantische Aktionen für späteres Recording
- Aktionssystem: alle Controlpanel-Buttons vollständig auf
runAction migriert – Orbits, HZ, Labels, Shadow, Log/Lin, Pause, UI-Panel, System-Navigation, Übersicht-Zurück, Screenshot, Compare
- Aktionssystem: Dev-Logging eingebaut – jedes
runAction und endAction gibt Timestamp, Key und Parameter einzeilig in die Konsole aus (Flag _ACTION_LOG)
- Screenshot-Logik in eigene Funktion
_doScreenshot ausgelagert; Compare-Button respektiert Zustandsautomat (Start / Abbruch) unverändert
- Neues Feature (PoC): Aktionssystem – zentrale Funktionen
runAction(key, params) und endAction(key) eingeführt; GUI-Aktionen laufen künftig über diese Schnittstelle statt direkte Methodenaufrufe
- Auto-Zoom-Toggle und Kamera-Fokus als erste Aktionen migriert (
toggle-autozoom, focus-object); Fokus-Aktion liefert ein Promise, das nach Abschluss der Kamerabewegung resolved wird
- BugFix: Caching von Texturen verbessert und Ladeverzögerungen bei Textur-Fallbacks behoben
- Materiezusammensetzung: Änderung der Datenstruktur; eigener Materieknonten (matter)
- Materiezusammensetzung: Gasriesen eingeschlossen; Anzeige Unterschiede Oberfläche ("Atmosphäre") und Gesamtmasse
- Materiezusammensetzung: Daten der Gasriesen und Eisriesen hinzugefügt
- Sterngrößen werden jetzt physikalisch skaliert statt fixer Pixelgröße pro Spektralklasse – Potenzfunktion (√rKm) kalibriert auf Sonne = 28 Einheiten, gilt in System-, Übersichts- und Vergleichsansicht
- Rote Zwerge und Braune Zwerge zeigen damit mehr Variabilität je nach tatsächlicher Masse
- Hilfsfunktionen
starRkmFromData und scaleStarR eingeführt; doppelte Radius-Logik in der Vergleichsansicht entfernt
- Bugfix: doppeltes
class-Attribut auf allen Slider-Buttons bereinigt – Zoom-Button zeigte falschem Tooltip und aktivierte den falschen Button
- Bugfix: Vergleichsmodus mit Nachbarstern-Klick zeigte immer Radius 500 km – Nachbarstern-Objekte haben jetzt korrekte Sterndaten, sodass Masse und Radius richtig berechnet werden
- Neuer Regler: Kamerageschwindigkeit – steuert die Geschwindigkeit aller Kamerabewegungen (Auto-Focus, System-Zoom, Übersicht-Zoom). Skala 0.1× bis 2.0×, Standardwert 1.0×, mit mehr Stufen im langsameren Bereich
- Kamera-Icon (
icon-camspeed) in icons.svg ergänzt
- Screenshot-Icon in icons.svg ausgelagert (neues Symbol
icon-screenshot) – inline SVG im HTML entfernt
- Doppeltes
icon-compare-Symbol in icons.svg bereinigt
- Screenshot: Labels werden nun scharf gezeichnet – Skalierungsfaktor wird direkt aus dem tatsächlichen Canvas-/Viewport-Verhältnis abgeleitet statt aus devicePixelRatio
- Screenshot: Auflösung ist jetzt konsistent – der Renderer wird unmittelbar vor der Aufnahme auf die aktuelle Viewport-Größe normiert, damit keine zwischenzeitlichen Resize-Events (z.B. Browser-UI) zu abweichenden Bildgrößen führen
- Screenshot: Controlpanel wird vor der Aufnahme automatisch ausgeblendet und danach wieder eingeblendet
- Screenshot: Objektbezeichnungs-Labels werden (sofern eingeblendet) direkt auf den Screenshot gezeichnet – so ist nachvollziehbar, was was ist
- Screenshot-Funktion: Neuer Kamera-Button neben dem Vergleichstool – pausiert die Simulation, wechselt in den Vollbild-Modus, nimmt einen Screenshot auf und stellt danach den ursprünglichen Zustand wieder her
- Vergleichsmodus: Textmarkierung per Maus auf den Objektnamen-Labels und im Comparepanel unterbunden
- Sternbilder: Schlüssel der Sternbilder hinzugefügt (z.B. cen, uma, cma)
- Lokalisierung vervollständigt: Spektralfarben (gelb/yellow, orange usw.), Leuchtkraftklassen (Unterriese/Subgiant, Unterzwerg/Subdwarf, Hyperriese/Hypergiant)
- Sternbild-Namen lokalisiert (z.B. Zentaur → Centaurus, Schlangenträger → Ophiuchus)
- Zwergplaneten-Unterkategorien (z.B. Hauptgürtelobjekt → Main Belt Object) und Asteroiden-Typen (C-Typ → C-type, basaltisch → basaltic) lokalisiert
- Vergleichsansicht: Spaltenüberschriften zeigen jetzt lokalisierte Objektnamen
- Internationalisierung: Neue Hilfsfunktion
tName(key) für lokalisierte Objektnamen – Sprachumschaltung aktualisiert jetzt alle Labels, Infopanels, Focus-Label und Systemtitel live
- Objektnamen in
languages.json ergänzt: Deutsch und Englisch für alle Systemnamen, Planeten (Sonne/Sun, Erde/Earth, Merkur/Mercury usw.), Monde, Zonen und Schwerpunkt-Einträge
- Prokyon → Procyon (englische Bezeichnung), Barnard's Stern → Barnard's Star, Kuiper-Gürtel → Kuiper Belt usw.
- Hardcoded Texte lokalisiert: "Habitable Zone" und "Schwerpunkt" (bei Zwergplaneten-Baryzentren) nun über i18n
- Vergleichsansicht zeigt lokalisierte Objektnamen
- Diverse kleinere Korrekturen im HTML, CSS und JS code
- Bugfix: Kamera konnte bei aktivem Auto-Focus in große Objekte (Sonne, Jupiter, Saturn) hineingezoomt werden – Minimalabstand zum Objekt wird jetzt strikt eingehalten
- Icons: Überarbeitung und Auslagerung aller Roll- und Pan-Cursor und einiger anderer SVGs
- Kamera-Pan: Klick/Tap auf den zentralen Bereich jeder Bildschirmseite (oben/unten/links/rechts) verschiebt die Kameraposition einen Schritt in die jeweilige Richtung – angezeigt durch einen Pfeil-Cursor
- Kollisionsschutz: Kamera kann nicht in Objekte hineingeschoben werden
- Roll-Zonen bleiben an den äußeren Randbereichen aktiv; Pan- und Roll-Zonen überlappen sich nicht
- Bugfix: Fehlende Deklaration von
_infoTgt behoben – verhinderte hundertfache Konsolenfehler ("ReferenceError: _infoTgt is not defined") in der Animationsschleife
- Korrekturen an der Materiezusammensetzung diverser Objekte (Venus, Erde, Phobos, Deimos, Asteroiden Ceres, Pallas, Hygiea und äußere Zwergplaneten Haumea, Makemake, Eris, Pluto)
- Ladebildschirm: Versionsnummer wechselt bei 100% Ladefortschritt zur App-typischen Gold-Hervorhebung (Farbe, Fettschrift, Leuchteffekt)
- Infopanel 3 (Materiezusammensetzung): Label umformattiert, bessere Kollisionsprüfung, Führungslinien schwarz
- Infopanel 3 (Materiezusammensetzung): Korrektur drag Grenzen auf Mobile Geräten
- Daten: Korrektur "Gelber Zwerg" in Lokalisierungsdaten
- Infopanel 3 (Materiezusammensetzung): Label-Spalten komplett neu berechnet – feste Breite pro Spalte garantiert dass alle Labels innerhalb des Panels bleiben; Panel auf 320px verbreitert; Segmentzuweisung links/rechts nach echtem Winkel (nächste Seite)
- Infopanel 3 (Materiezusammensetzung): Startposition rechts unten statt zentriert oben
- Pie-Chart Labels: komplett neu – alle Labels außen mit zweispaltiger Anordnung (links/rechts vom Diagramm), Kollisionsvermeidung durch vertikales Stacking, korrekte Ausrichtung der Label-Hintergrundboxen, keine überlappenden oder außerhalb des Panels ragenden Texte mehr
- Daten: Zusammensetzung für alle Monde ergänzt (Io, Europa, Ganymed, Callisto, Titan, Rhea, Dione, Tethys, Titania, Oberon, Umbriel, Ariel, Triton u.a.)
- Infopanel 3 (Materiezusammensetzung): Bugfix – Panel erschien nicht beim Fokussieren mit aktivem Auto-Fokus (Standard), da der Aufruf im Lerp-Abschluss fehlte
- Neues Infopanel 3: Materiezusammensetzung als Pie-Chart – zeigt die wichtigsten Bestandteile (max. 5) mit Prozentangaben für Sterne (nach Spektralklasse), Planeten, Monde, Zwergplaneten und Asteroiden; Gasriesen ausgenommen
- Neue Datei components.json: zentrale Verwaltung aller Stoffe mit Farbe und lokalisierten Namen (DE/EN); ATMO_COLORS refactored und wiederverwendet
- starsystems.json: Zusammensetzungsdaten für alle relevanten Objekte im Sol-System und alle Sterne in Nachbarsystemen ergänzt
- Zoom, Planetengeschwindigkeit und Mondgeschwindigkeit: Korrekturen an Slider, Tooltips und Icons
- Zoom, Planetengeschwindigkeit und Mondgeschwindigkeit: +/- Buttons durch einzelnen Toggle-Button ersetzt; ein Klick öffnet ein Slider-Panel oberhalb des Controlpanels mit Symbol, −, Slider, + und aktuellem Wert – gleiches Layout für alle drei Regler
- Proxima Centauri: Orbit vergrößert und Ellipse stärker ausgeprägt (realistischere Darstellung der weiten, exzentrischen Umlaufbahn um das Alpha-Centauri-AB-Baryzentrumit)
- UI-Icons in eine zentrale Sprite-Datei ausgelagert (images/icons.svg) – die HTML-Datei wird dadurch schlanker und Icons sind an einem Ort pflegbar
- Pfade für CSS und Datendateien auf root-relative Pfade umgestellt (kein führendes „.")
- Deeplinks funktionieren wieder: Auswertung der URL wird jetzt erst nach dem Laden der Systemdaten durchgeführt, nicht mehr beim Script-Start wenn die Daten noch fehlen
- Monde werden jetzt mit derselben Skalierungslogik wie alle anderen Objekte berechnet (scaleR mit rKm × scaleKm, Minimum 1.0) – kleine Monde wie Phobos und Deimos erscheinen jetzt deutlich kleiner als große Monde wie unser Mond oder Titan
- Auto-Focus: Kamera-Stopposition skaliert jetzt mit der Objektgröße – Planeten, Monde und kleine Objekte werden deutlich näher herangezoomt, die Sonne entsprechend weiter weg; alle Objekte erscheinen jetzt ähnlich groß im Bild
- Vergleichsansicht: Planetenringe (Saturn, Uranus usw.) werden jetzt korrekt dargestellt
- Vergleichsansicht Mobile: Absturz nach Label-Klick behoben – das Infopanel blockierte alle Touches wenn es sichtbar war; Touch-Drag des Panels läuft jetzt lokal statt über einen globalen window-Handler
- Vergleichsansicht Mobile: Infopanel blockiert keine Touches mehr wenn es ausgeblendet ist (pointer-events deaktiviert)
- Vergleichsansicht: Zoom stockt beim Wechsel zwischen Labels weniger – Kamera-Animation etwas beschleunigt
- Vergleichsansicht Mobile: Touch-Eingabe komplett neu implementiert – alle Touches laufen direkt über den Canvas, Labels/Panels verwenden Tap-Erkennung per Positions-Abgleich; Zoom und Drehen funktionieren jetzt zuverlässig
- Vergleichsansicht: Zoom stockt nicht mehr nach dem Anklicken eines Labels – Zoom-Velocity wird beim Fokus-Wechsel und am Ende der Kamera-Animation zurückgesetzt
- Vergleichsansicht Mobile: Drehen und Zoomen (Pinch) funktionieren jetzt korrekt – Touch-Events werden vollständig abgefangen und nicht mehr vom Haupt-Canvas-Handler überschrieben
- Vergleichsansicht: Zoom stockt nicht mehr wenn das Minimum erreicht wird – Zoom-Geschwindigkeit wird beim Erreichen der Grenze sofort zurückgesetzt
- Vergleichsansicht: Mindest-Zoom jetzt objekt-abhängig – beim Fokus auf das kleinere Objekt kann man wieder nah heranzoomen, beim größeren bleibt der Schutz vor dem Hineinfliegen erhalten
- Vergleichs-Infopanel: Schließen-Button blendet nur das Panel aus, ohne Kamera oder Fokus zurückzusetzen
- Vergleichs-Infopanel: Breite wieder auf Originalwert (kein Textumbruch mehr)
- Vergleichsfunktion auf Mobile: Abbruch-Button (Klick auf „1" oder „2") funktioniert jetzt korrekt – der Button kehrt zum Ausgangszustand zurück und Zoom/Klick bleiben danach vollständig nutzbar
- Vergleichsansicht: Kamera kann nicht mehr in Objekte hineinzoomen – bei stark unterschiedlichen Größen (z.B. Sonne vs. Asteroid) bleibt ein sinnvoller Mindestabstand erhalten
- Vergleichs-Infopanel auf Mobile jetzt genauso transparent und kompakt wie die übrigen Infopanels
- Türkisfärbung aller Objekte in Sol- und Alpha-Centauri-System behoben: die Lichtfarbe der Sonne (Klasse G) war auf einen falschen Wert gesetzt worden (0xFFF4 statt 0xFFF4E0), was alle beleuchteten Objekte türkis erscheinen ließ
- Groombridge 34 A Orbit korrigiert: AU-Werte ≥ 80 wurden fälschlich als visuelle Einheiten interpretiert – Stern-Orbits werden jetzt immer direkt als AU-Rohwerte behandelt
- Epsilon Indi Orbit-Proportionen korrigiert (gleiche Ursache)
- CSS neu organisiert
- Stern-Orbits in Mehrsternsystemen vollständig korrigiert: Systeme mit Schwerpunkten (EZ Aquarii, 61 Cygni, Prokyon, Gliese 725, Groombridge 34, Epsilon Indi) haben jetzt wieder die richtigen Abstände – AU-basierte Orbits werden korrekt skaliert, visuelle Fixwerte bleiben unverändert
- Trümmergürtel/Zonen-Darstellung korrigiert: Gürtel in Epsilon Eridani und Tau Ceti wurden verzerrt, da Außenradien ≥ 80 AU fälschlich als visuelle Einheiten interpretiert wurden
- Restliche Farbfehler behoben: Uranus und 2 Eisriesen-Exoplaneten hatten leicht abweichenden Farbton
- Stern-Orbit-Abstände in Mehrsternsystemen korrigiert: Toliman/Rigil Centaurus und andere Sternpaare lagen viel zu weit auseinander, da ihre Abstände fälschlich als AU-Werte interpretiert wurden
- Farbdarstellung aller Objekte korrigiert: weitere fehlerhafte Farbwerte (Eisriesen in mehreren Systemen) behoben
- Ladebildschirm-Fehler behoben: Ladebalken bewegte sich nicht und der Startbildschirm verschwand nicht, nachdem Sternsystem-Daten in externe JSON-Dateien ausgelagert wurden
- Sternsystem-Daten, Kategorien und Sprachdateien in externe JSON-Dateien ausgelagert (data/starsystems.json, data/categories.json, data/languages.json) – HTML deutlich kleiner, Daten separat pflegbar
- Loader mit Fehleranzeige eingebaut falls Dateien nicht gefunden werden
- Version im Dokumenttitel dynamisch; iMessage URL image
- Texturen hinzugefügt für einige Jupiter- und Saturnmonde, sowie für viele Exoplaneten
- Alle hardcodierten deutschen/englischen Strings im UI-Code in das i18n-System überführt (Größenvergleich-Spalten, Objektkategorien, Rotations- und Umlaufzeitwerte, Atmosphäre, Heimsystem u.v.m.)
- Neue i18n-Keys: planet.terrestrial, val.locked, val.retro, val.unknown_bare, val.home_system, val.none, cmp.title, cmp.dist_planet, cmp.stefan_boltzmann, cmp.col.* (alle Tabellenspalten)
- Deutsche Code-Kommentare ins Englische übersetzt
- Größenvergleich: System-Zugehörigkeit wird jetzt beim Auswählen des Objekts gespeichert – Vergleiche zwischen Objekten aus verschiedenen Systemen (z.B. Jupiter + Proxima Centauri b) zeigen jetzt korrekt den Abstand zwischen den Zentralsternen in Lichtjahren
- Größenvergleich: Nachbarstars können jetzt als Vergleichsobjekt ausgewählt werden (vorher wurde ein Klick darauf ignoriert und stattdessen das System gewechselt)
- Größenvergleich: Stern↔Stern Distanz nutzt jetzt die echten 3D-Koordinaten (RA/Dek/Distanz) – Sol↔Toliman, Proxima↔Toliman etc. zeigen korrekte Lichtjahre
- Größenvergleich: Objekt in fremdem System zeigt jetzt korrekt den Abstand zwischen den Zentralsternen an
- Größenvergleich: Distanzberechnung komplett neu – Mond↔eigener Planet (km via OrbitAU), Mond↔Mond gleicher Planet (km via Orbitwinkel), Mond↔Mond verschiedene Planeten (Vektorberechnung), Mond↔Planet/Stern (Vektoraddition), verschiedene Systeme (Lichtjahre zwischen Zentralsternen)
- Infopanel 1: Monde zeigen jetzt die Distanz zum Planeten in km an
- Infopanel 2: Sterne zeigen jetzt die Leuchtkraft als Tag unterhalb der Farbe an, mit eigener Führungslinie zum selben Mittelpunkt der Sternkugel
- 3D-Kugeln: Polygonanzahl für Monde, Zwergplaneten, Asteroiden und Begleiter deutlich erhöht – weniger sichtbare Kanten beim Ranzoomen
- Größenvergleich: Gewähltes Objekt im Info-Panel wird gelb hervorgehoben (Spaltenname und Werte); beim Umschalten bleibt die Panel-Position erhalten
- Größenvergleich: Sternradius wird jetzt über Stefan-Boltzmann aus Leuchtkraft und Oberflächentemperatur berechnet (gekennzeichnet mit *)
- Größenvergleich: Temperatur zeigt bei Sternen die Oberflächentemperatur in Kelvin
- Größenvergleich: Zeile „Distanz" zeigt bei Sternen Entfernung zu Sol, bei Planeten Abstand zum Zentralstern
- Größenvergleich: Zeile „Satelliten" zeigt bei Sternen Planetenanzahl, bei Planeten Mondanzahl
- Größenvergleich: Info-Panel zeigt jetzt beide Objekte nebeneinander in einer übersichtlichen Tabelle; fehlende Werte werden als „–" angezeigt
- Größenvergleich: Info-Panel ist jetzt per Drag & Drop frei verschiebbar und hat ein X zum Schließen
- Größenvergleich: Kamerafokus auf Objekt funktioniert jetzt korrekt – Look-At-Punkt bewegt sich sanft zum Objekt, Initialisierungsfehler behoben
- Größenvergleich: Distanzlinie/Label hinkt nicht mehr nach
- Größenvergleich: Distanzberechnung nochmals überarbeitet (Mond↔Mond, Mond↔fremdes Objekt, Stern↔Stern)
- Größenvergleich: Klick auf Objekt-Panel funktioniert korrekt; Kamerafokus mit sanftem Lerp
- Größenvergleich: Distanzberechnung und Anzeige vollständig überarbeitet
- Größenvergleich: Objekte sind anklickbar – Kamera zoomt auf das jeweilige Objekt
- Größenvergleich: Distanzberechnung komplett überarbeitet – basiert jetzt ausschließlich auf echten astronomischen Daten (AU-Orbitradien, Lichtjahre aus RA/Deklination), keine Szenen-Koordinaten mehr; Stern↔Planet zeigt Orbitradius, Planet↔Planet nutzt Kosinussatz mit aktueller Winkelposition, Mond↔Elternkörper zeigt echten Orbitabstand, Systeme→ Lichtjahre
- Alle Mondorbits mit echtem AU-Wert ergänzt (Rohdaten)
- Größenvergleich: Name und Radius jetzt in einem gemeinsamen Panel pro Objekt (gerundetes Rechteck, Name groß, Radius klein darunter)
- Größenvergleich: Distanzanzeige zeigt jetzt den realen astronomischen Abstand – bei Objekten im gleichen System deren aktuelle Orbitdistanz in AU, bei Objekten aus verschiedenen Systemen den Sternabstand in Lichtjahren
- Größenvergleich: Name/Radius-Labels jetzt als gerundetes Panel (wie Steuerungsleiste) – Darstellung war trotz vorangegangener Ankündigung noch nicht umgesetzt
- Größenvergleich: Max-Zoom begrenzt, Kamera kann nicht mehr hinter den Sternenhintergrund zoomen
- Größenvergleich: Distanzanzeige korrigiert – zeigt nun den tatsächlichen Abstand zwischen den Objektmittelpunkten (statt Summe der Radien)
- Größenvergleich: Führungslinie 2 wird beim Betreten und Verlassen dieser Ansicht korrekt ausgeblendet
- Version und Versionhistory korrigiert
- Größenvergleich: Radius-Labels fehlerhafte Anzeigeposition behoben
- Größenvergleich: Name/Radius-Labels jetzt als gerundetes Panel (wie Steuerungsleiste)
- Größenvergleich: Sternenhintergrund in der Vergleichsszene
- Größenvergleich: Gestrichelte grüne Linie zwischen den Objekten mit Distanz-Label (in AU oder Lj)
- Bugfix: Führungslinie 2 blieb beim Wechsel in den Vergleichsmodus sichtbar
- Größenvergleich: Objekte werden jetzt exakt auf 1/4 und 3/4 der Bildschirmbreite positioniert; Kamera zoomt automatisch weit genug heraus damit beide Objekte sichtbar sind
- Größenvergleich: Objekte werden jetzt mit Texturen, Atmosphäre/Wolken und Sternleuchten dargestellt wie im normalen Modus
- Neues Feature: Größenvergleich zweier Objekte – Button in Sektion 2, schrittweise Auswahl von zwei Objekten, eigene Vergleichsszene mit realistischem Größenverhältnis, Kamerasteuerung und Zurück-Button
- Nachbarsterne (andere Systeme im Hintergrund) sind jetzt direkt anklickbar: fehlender Raycaster-Check ergänzt und Klickzone im linearen Modus korrigiert (war dort viel zu klein)
- Redundante deutsche Tooltip-Texte (title-Attribute) entfernt – werden ohnehin vom Sprachsystem gesetzt
- Kamerasensitivität angepasst: Roll deutlich reduziert, Rotation und Zoom leicht reduziert
- Loading Screen Titel Formattierung korrigiert
- Proxima Centauri Startposition verbessert
- Infopanel2 Anzeigefehler behoben
- Alpha Centauri-System: Orbit von Proxima Centauri deutlich elliptischer und größer dargestellt (Halbachse 300→700, Exzentrizität 0.60→0.85), sodass die Planetenbahnen klar innerhalb der Sternbahn liegen
- Code-Aufräumung: doppelte CSS-Regel (#systemLabel), doppelte HTML-ID (loading-info), unbenutzte CSS-Klasse (.sep), tote Variablen (_origLoadOverview, _origOnTexDone, _deepLinkDone, labels, totalSvgH), redundante Felder (nDots_mob) und leerer Kommentar entfernt
- Screenshot-Funktion und -Button entfernt
- Screenshot-Funktion komplett überarbeitet: Infopanels werden nun pixel-genau 1:1 wie auf dem Bildschirm dargestellt (via html2canvas), keine Darstellungsfehler mehr bei Labels, Farben oder Transparenzen
- Screenshot-Bugfix: Infopanel 2 (Atmosphärenzusammensetzung und Spektralklassendarstellung) wird nun korrekt im Screenshot abgebildet
- Cursor for Kamera kippen verbessert
- Code Kommentare und Sektionennummerierung korrigiert
- Screenshot-Button (Kamera-Symbol) in Sektion 2: pausiert die Simulation, blendet das Steuerungspanel aus, wechselt in den Vollbildmodus und speichert einen Screenshot – danach wird alles auf den vorherigen Zustand zurückgestellt
- Tooltips für alle Buttons im Steuerungspanel ergänzt (DE/EN): System-Navigation, Zoom, Pause, Auto-Fokus, Geschwindigkeit, Mondgeschwindigkeit, log/lin-Schalter
- Positionen aller Objekte auf ihren Orbits werden beim ersten Betreten eines Systems einmalig zufällig gesetzt und danach gespeichert – beim Zurückkehren oder beim Umschalten zwischen log/lin stehen alle Objekte wieder genau dort, wo sie zuletzt waren
- Änderungen diverser Versionen zusammengeführt
- Zoom-Konvertierungsfaktor beim log/lin-Umschalten ist jetzt systemspezifisch: beim Laden eines Systems wird der Faktor aus dem weitesten Planeten berechnet (Verhältnis lin/log bei dieser AU-Distanz)
- Systeme ohne Planeten über 1 AU (z.B. Barnard) behalten den Zoom unverändert beim Umschalten
- Zoom-Konvertierung vereinfacht (proportionales Verhältnis ×27); Nachbarsterne im lin-Modus sichtbar; Proxima c wiederhergestellt; Orbit-Highlights nach Toggle wiederhergestellt
- Focus und Infopanels bleiben beim Umschalten erhalten; hardcodierte Pixelabstände durch AU()-Aufrufe ersetzt; Focus-Zoom-Maximum dynamisch; Sternen-Hintergrund vergrößert
- Zoom proportional konvertiert; Zoom-Max 42×; visDist-Floor reduziert; Sirius B / Proxima orbit-Skalierung korrigiert
- log/lin-Button an Sektion 1b; Zoom-Chaos behoben; Mindestabstand für enge Planeten; Focus-Max erhöht
- Hardcodierte visuelle Positionen beim Umschalten nicht mehr verzerrt; Datenfehler Proxima c behoben
- Neuer Toggle-Button "log/lin": schaltet alle Distanzen zwischen logarithmischer (Standard) und linearer Darstellung um
- Kamera-Rollen in Randbereichen; Halbkreis-Cursor; auf Mobile deaktiviert
- Zoom-Inertia für Mausrad, Pinch und Buttons (alle Modi)
- Kamera-Rotation in Systemübersicht repariert; Deeplink-Distanzlinien korrekt
- Korrekturen zu lokalisierten Texten
- Korrekturen zur angezeigten Versionsnummer im Ladebildschirm
- Mehrsprachigkeit eingeführt (Deutsch / Englisch): alle UI-Texte, Button-Tooltips, Info-Panel-Labels, Einheiten und Sternklassen übersetzt
- Sprachschalter (DE/EN) im HUD oben rechts neben dem Systemtitel; Einstellung wird gespeichert
- Zahlenformatierung (Komma vs. Punkt) passt sich automatisch der gewählten Sprache an
- Ladebildschirm: auf kleinen Screens (unter 600px) automatisch verkleinert – Schrift, Logo und Breite passen sich an
- Mobile: Texturen werden aus
images/lowres/ geladen wenn vorhanden, danach normaler Fallback – verhindert Abstürze durch zu großen Speicherbedarf auf Mobilgeräten
- Kamera-Inertia: vertikaler Grenzwert von 85.9° auf 74.5° reduziert (kein Gimbal-Lock mehr), Velocity wird beim Erreichen der Grenze sofort gestoppt statt aufzustauen
- URL-Deeplink: Distanzlinien zu Nachbarsystemen werden beim automatischen Zoom jetzt angezeigt (wie bei Hover)
- Kamera-Inertia: Blickwinkeländerungen laufen jetzt sanft aus statt abrupt zu stoppen (Dämpfungsfaktor 0.82)
- Ladebildschirm neu gestaltet: Titel „AstroViewer" mit Farbverlauf und Glüheffekt, Untertitel „3D Star System Explorer", Logo-Bild (images/logo.png, nur wenn vorhanden), Versionsnummer und blauer Fortschrittsbalken
- Schatten-Toggle grundlegend überarbeitet: kein Flutlicht mehr in der Szene – stattdessen wird die Mindesthelligkeit direkt im Shader jedes Objekts angehoben. Objekte auf der Vorderseite des Sterns werden nicht mehr doppelt beleuchtet
- Schatten-Toggle neu implementiert: bestehende Beleuchtung bleibt unverändert, zusätzliche Flutlichter aus allen Richtungen werden zugeschaltet – Rückseite der Objekte wird aufgehellt ohne die Vorderseite zu überstrahlen
- „Zurück zur Übersicht"-Schalter: alle inline-Styles entfernt, Pfeil als SVG – Button ist jetzt identisch groß wie alle anderen
- Schatten-Toggle erneut korrigiert: Sternlichter (PointLights) und Füll-Licht werden auf 0 gesetzt, Ambient-Licht auf Vorderseiten-Niveau angehoben – keine weißen/leuchtenden Objekte mehr
- „Zurück zur Übersicht"-Schalter: einheitliche Größe durch globale Button-CSS-Korrektur (padding entfernt, height fix 32px)
- Schatten-Toggle erneut überarbeitet: alle Lichtquellen (Sternlicht, Füll-Licht) werden deaktiviert und Planeten-Emissive angehoben – Schattenseite erscheint jetzt gleich hell wie die Vorderseite ohne Überbelichtung
- Neuer Vollbild-Schalter neben dem Pause-Button (Symbol: diagonale Pfeile); wechselt das Symbol beim Aktivieren auf Verkleinern-Pfeile
- „Zurück zur Übersicht"-Schalter jetzt gleich groß wie alle anderen, Pfeil vertikal zentriert
- Symbol vor dem Pause-Schalter korrigiert (drei Schieberegler wiederhergestellt)
- Schatten-Toggle überarbeitet: Schattenseite wird auf Vorderseiten-Helligkeit angehoben, kein Überleuchten mehr
- Distanzlabel der Nachbarsterne wird beim Zoom in ein Nachbarsystem nun korrekt ausgeblendet
- Steuerungspanel: neue Sektion mit Pause-Schalter und neuem Schatten-Schalter (blendet die Schattenseite von Planeten aus – beide Seiten gleich hell)
- Auto-Focus Schalter nun unter dem Zoom-Minus, mit passendem Fadenkreuz-Symbol
- „Zurück zur Übersicht"-Schalter hat jetzt die gleiche Größe wie alle anderen Schalter, Pfeil vertikal zentriert
- Haumea: Monde Hi'iaka (160 km, 49.5 Tage) und Namaka (85 km, 18.3 Tage) hinzugefügt
- Makemake: Mond MK2 (87 km, 12.4 Tage) hinzugefügt
- Steuerungspanel hat jetzt Priorität über Nachbarstern-Labels – Schalter immer klickbar
- Entfernungslabel der Nachbarsterne wird beim Smooth Zoom ausgeblendet
- Wolken/Atmosphäre: Opazität erhöht – Wolkenmuster nun deutlich sichtbar (terrestrische Planeten 0.32→0.65, Gas-/Eisriesen 0.32→0.55)
- Basisgeschwindigkeit halbiert – 1× ist jetzt halb so schnell wie zuvor
- URL Deep Links: Pfad
/sol-system startet automatisch mit Zoom auf das Sonnensystem; /sol-system/titan zoomt zusätzlich direkt auf das Objekt – nur beim ersten Aufruf, danach alles wie gewohnt
- Unterstützt alle System-Keys (z.B.
alpha-centauri-system) und Objekt-Keys (z.B. titan, pluto, moon)
- Nachbarsterne: SKY_R auf 5000 reduziert – Zoom endet jetzt mit gleicher scheinbarer Sterngrösse wie in der Systemübersicht
- Namenslabel 2px höher positioniert
- Nachbarsterne: WebGL-Canvas z-index fix – Labels und Sterne-Dots jetzt klickbar (lagen vorher unter dem Canvas)
- Zoom-Effekt: Identische Logik wie Systemübersicht – sauberer Anflug, kein aufblitzender Stern
- Label-Abstände: Namenslabel näher am Stern, Distanzlabel etwas tiefer
- Nachbarsterne: Canvas und Labels jetzt korrekt klickbar (pointer-events Fix im #labels Container)
- Smooth Zoom: Echter Stern-Mesh mit Textur und Glow wird beim Klick an der Himmelsposition eingeblendet und dann genauso angezoomt wie andere Sterne
- Label-Abstände feinjustiert
- Nachbarsterne: Canvas-Größe auf 120×120px erhöht, transparenter Hintergrund, korrekter radialer Farbverlauf
- Smooth Zoom: Kein Quadrat mehr, Stern wächst sauber während Anflug, Label und Distanz bleiben sichtbar
- Label etwas höher, Distanz etwas tiefer positioniert
- Nachbarsterne: Umstellung auf DOM-Canvas-Element statt Three.js Sprite – kein Versatz, kein Quadrat, immer sichtbar am richtigen Ort
- Stern wächst beim Anflug organisch von klein (5px) auf groß (60px Glühen)
- Label und Distanz exakt über dem Stern positioniert
- Nachbarsterne: Umstellung von Points auf Sprite – frustumCulled deaktiviert, Sterne jetzt immer sichtbar am Himmel
- Smooth Zoom: Stern wächst über Sprite-Skalierung organisch auf volle Größe an
- Nachbarsterne: depthTest deaktiviert – Sterne jetzt immer sichtbar vor dem Hintergrundhimmel
- Smooth Zoom: Ziel-Stern wächst während des Anflugs von klein auf volle Anzeigegröße an
- Nachbarsterne: Sterne jetzt als sichtbare Pixel-Sprites (sizeAttenuation off) – immer mehrere Pixel groß, unabhängig von der Distanz
- Nachbarsterne: Klick auf Name- oder Entfernungs-Label löst ebenfalls den Smooth-Zoom/Systemwechsel aus
- Nachbarsterne: In jedem System werden die 3 nächsten Sterne/Systeme als kleine Sterne im Hintergrundhimmel angezeigt – mit Systemname und Entfernung in Lichtjahren
- Position der Nachbarsterne am Himmel wird aus echten RA/Dec-Koordinaten relativ zum aktuellen System berechnet
- Klick auf einen Nachbarstern löst einen Smooth-Zoom-Übergang aus und wechselt direkt in das entsprechende System
- Nachbarsterne werden beim Systemwechsel aktualisiert und korrekt aus der Szene entfernt
- Ring-Typ "sparse": zeigt jetzt fix 6 Ringe (statt 3) mit hoher Varianz in Breite und Helligkeit
- Neuer Ring-Typ "basic": einfacher, gleichmäßiger Ring mit weichen Rändern – für Objekte mit schmalen Einzelringen
- Haumea: Ring-Typ von "sparse" auf neues "basic" umgestellt – wird jetzt korrekt angezeigt
- Haumea: Ring hinzugefügt (2017 entdeckt, sehr schmal, Typ "sparse")
- Ring-Typ "sparse": Bänder jetzt unregelmäßig – zufällig platziert, unterschiedliche Breiten (0.015–0.085) und Helligkeit; 4–7 Bänder pro Ring
- Planetenringe: Ringtyp als Datenfeld (type:"saturn" / type:"sparse" / default) statt hardgecodeter Objektnamen-Ausnahmen
- Typ "sparse" (Uranus, Neptun): schmale helle Bänder mit breiten dunklen Lücken und deutlich höherer Opazität – Varianz nun sichtbar
- Opazität von Uranus- und Neptunringen erhöht damit die prozeduralen Strukturen sichtbar sind
- Planetenringe: prozedural generierte Canvas-Textur statt Flatfarbe – radiale Bänder, Helligkeitsvariationen, feines Rauschen
- Saturn: spezifische Ringstruktur mit C-Ring (innen, dunkel), B-Ring (hell, dicht), Cassini-Division (Lücke), A-Ring mit Encke-Bereich
- Uranus/Neptun: subtile Ringe mit niedrigerer Deckkraft
- Bugfix: Führungslinie von Infopanel 2 auf Mobile/Touch zeigte auf falsche Position wenn Panel gedraggt wurde – JS-Skalierungserkennung nutzt jetzt exakt dieselbe Bedingung wie die CSS Media Query (max-width:500px / pointer:coarse) statt eines abweichenden Breitenvergleichs
- URLs auf relative Pfade umgestellt: Textur-Basis-URL (/images/) und Versionhistory-Link (versionhistory.html) – vorbereitet für Deployment auf astroviewer.pages.dev
- Panel-Toggle: Restore-Button Ausrichtung korrigiert
- Neuer Toggle-Button im Panel (Sektion 3, Row 1): blendet das gesamte Steuerungspanel aus. Symbol: abgerundetes Rechteck mit 3 Punkten (Panel-Icon)
- Wenn Panel ausgeblendet: kleiner Restore-Button erscheint im HUD neben dem Systemnamen mit gleichem Symbol – bei Klick/Touch wird Panel wieder eingeblendet
- Infopanel 1+2: Schließen-Button ✕ jetzt dauerhaft sichtbar (überlebt innerHTML-Updates)
- Infopanel 1+2: Position-Gedächtnis korrigiert – Panel bleibt nach Drag an seiner Position auch beim Wechsel zu anderen Objekten
- Infopanel 2: skaliert jetzt auch bei schmalem PC-Fenster (<600px) auf 75%, nicht nur auf Mobile-Geräten
- Infopanel 2: gleiche transparente Mobile-Optik wie Infopanel 1 (via media query)
- Infopanel 1+2: per Drag frei verschiebbar (Mouse + Touch); Drag fängt Events ab bevor die Szene sie verarbeitet
- Infopanel 1+2: Schließen-Button (✕) rechts oben
- Infopanel 1+2: Führungslinie zeigt auf nächste Panel-Kante zum Objekt
- Infopanel 1+2: Position wird pro Panel gespeichert; erste Anzeige eines neuen Objekts berechnet Position automatisch, danach bleibt die zuletzt gezogene Position
- Infopanel 2: auf Mobile 25% kleiner via scale(0.75) – skaliert auch SVG-Grafiken
- Infopanel 2: Leader-Linie zeigt jetzt auf die dem Objekt nächste Panel-Ecke statt immer oben-rechts
- Sektion 0: Reihenfolge invertiert – Systemnavigation oben, Zurück-Button unten; Pfeil etwas größer
- Sektion 3: Auge-Symbol mit Wimpern (4 kurze Linien am oberen Bogen) in beiden Rows
- Neuer Toggle-Button "abc" in Sektion 3: blendet alle Name-Labels aus (Sterne, Planeten, Monde, Zwerge, Asteroiden, Zonen) sowie Tooltip und Focus-Label – für textfreie 3D-Renders
- Sektion 3: HZ-Toggle-Button hinzugefügt – blendet Habitable Zone (Ring + Label) ein/aus, Einstellung bleibt beim Systemwechsel erhalten
- Orbit-Toggle-Symbol: äußere Ellipse diagonal und größer
- Neue Sektion 3 im Control Panel: Auge-Symbol + Orbit-Toggle-Button (3 gekurvte Linien). Bei Deaktivierung werden alle Orbitlinien ausgeblendet
- Control Panel umorganisiert: Sektion 0 (nur im System sichtbar) enthält jetzt Übersicht-Button + System-Navigation; Sektion 1 enthält Zoom + Pause/Autofokus; Sektion 2 unverändert
- Alle Buttons auf einheitliche Größe 32×32px normiert
- Carousel Control Panel: vollständig überarbeitet und stabilisiert. Korrekte Breitenberechnung via window.innerWidth; alle Sektionen werden angezeigt wenn Platz vorhanden; Navigation als Sliding Window (Rechts: nächste Sektion + rückwärts auffüllen; Links: vorherige Sektion + vorwärts auffüllen)
- Mobile: Pfeil-Buttons reagieren jetzt korrekt auf Touch (touchend + preventDefault, touch-action:manipulation, -webkit-user-select:none)
- Carousel: Navigation korrigiert – Rechts/Links navigiert jetzt als echtes Sliding Window; die neue Zielsektion wird immer angezeigt plus so viele daneben wie Platz haben (unabhängig von Sektionsbreiten)
- Control-Panel als Carousel redesigned: auf kleinen Bildschirmen werden nur so viele Sektionen angezeigt wie Platz haben, Pfeil-Buttons (‹ ›) links/rechts zeigen an dass weitere Sektionen vorhanden sind
- Touch-Swipe zum Wechseln zwischen Sektionen unterstützt
- Auf großen Bildschirmen werden alle Sektionen gleichzeitig angezeigt wie bisher
- Bugfix: Wolken-Mesh hatte depthTest:false und renderOrder:999 – dadurch wurden Wolken durch andere Objekte hindurch gerendert (Geister-Effekt). Beides entfernt; da die Wolkenschicht etwas größer als der Planet ist (r×1.06) rendert sie korrekt vor dem Planeten ohne den Z-Buffer zu ignorieren
- Infopanel 2 für Sterne: neues Layout mit Titel "Spektral- und Leuchtkraftklasse", Leuchtkraftklasse links, Spektralklasse als Tag auf der Sternkugel, Farbe als Tag rechts mit gestrichelter grüner Verbindungslinie
- Infopanel 1 für Sterne: Leuchtkraftklasse, Spektralklasse und Farbe entfernt (jetzt ausschließlich in Panel 2)
- Sterne zeigen jetzt auch Infopanel 2 mit Oberflächentemperatur in K und einem farbigen Stern-Glow-Swatch in der Spektralfarbe des Sterns
- Oberflächentemperatur aus Infopanel 1 der Sterne entfernt (jetzt ausschließlich in Panel 2)
- Toten Code entfernt: normaliseOrbit() (war triviale Einzeiler-Wrapper), Legacy-Barycentre-Marker-Block (alle Systeme haben jetzt explizite Barycentren), parentStar-Fallback in planetParent()
- subcat-Werte vereinheitlicht: alle 25 Kurzformen ('t','g','i','gasgiant','terrestrial') durch exakte CAT-Keys ersetzt ('terrestrial', 'gasgiant', 'icegiant'); Alias-Logik aus Engine entfernt
- Internes Feld parentStar auf parentKey umbenannt (Zonenobjekte, HZ-Zonen, Planet-Update-Loop) – konsistent mit orbit.parent
- parentStar auf orbit.parent vereinheitlicht: alle 29 Planeten-Einträge nutzen jetzt orbit:{parent:'key'} statt parentStar:'key'
- Neue Hilfsfunktion planetParent(pd) liest orbit.parent oder legacy parentStar – vollständige Rückwärtskompatibilität
- Info-Panel: Sternname fällt bei Einzelsternsystemen korrekt auf den ersten echten Stern zurück (nicht mehr stars[0] der ein Barizentrum sein könnte)
- Datenmigration: alle 9 Mehrsternsysteme auf neue orbit{}-Hierarchie umgestellt (Alpha Centauri, Luhman 16, Sirius, Luyten 726-8, EZ Aquarii, 61 Cygni, Prokyon, Gliese 725, Groombridge 34)
- EZ Aquarii: erstmals physikalisch korrekt mit zwei expliziten Barycentren (ez-aquarii-bary-abc, ez-aquarii-bary-ac) – A+C umkreisen ihren gemeinsamen Schwerpunkt, dieser umkreist mit B den Gesamtschwerpunkt
- Epsilon Indi: Ba und Bb sind jetzt echte Sterne (T1/T6 Braune Zwerge) mit korrekter hierarchischer Darstellung – Schwerpunkt Ba/Bb (epsilon-indi-bary-babb) kreist um A, Ba und Bb kreisen umeinander
- Alle Barycentren haben konsistente Schlüssel: system-bary-komponenten (z.B. epsilon-indi-bary-babb)
- Engine-Redesign: neue orbit{}-Eigenschaft für Sterne mit parent, r, period, phase, inc, lan, ecc – ersetzt bary{}/baryElliptic{}
- Vollständige Parent-Hierarchie: jedes Sternobjekt kennt sein Elternobjekt und wird relativ dazu positioniert
- Neuer Objekttyp type:'barycenter' in stars[]: Schwerpunkte sind echte Objekte mit eigener Umlaufbahn und eigenem Schlüssel (z.B. epsilon-indi-bary-babb)
- Bugfix: jeder Stern hat jetzt seinen eigenen Winkel (_angle) statt eines systemweit geteilten _baryAngle – unterschiedliche Perioden im selben System werden korrekt berechnet
- Topologische Sortierung stellt sicher, dass Elternobjekte immer vor Kindern positioniert werden
- Vollständige Rückwärtskompatibilität: bestehende bary{}/baryElliptic{}-Daten werden automatisch auf orbit{} umgewandelt
- Epsilon Indi Ba/Bb: Implementierung vereinfacht und korrigiert – Ba und Bb werden jetzt wie Pluto/Charon als Dwarfs mit bary-Mechanik modelliert (kein neues Engine-Feature nötig)
- bary2-Feature wieder entfernt (war unnötig und verursachte liegenbleibende Orbitlinien beim Systemwechsel)
- Ba und Bb zeigen jetzt korrekt ihren gemeinsamen Schwerpunkt, der als Ganzes um Epsilon Indi A kreist
- Epsilon Indi Ba/Bb: hierarchischer Doppelkreisel korrekt implementiert – Ba und Bb umkreisen ihren gemeinsamen Schwerpunkt (2.1 AU, 11 Jahre), der wiederum um Epsilon Indi A kreist (1460 AU, ~460.000 Jahre)
- Neue Engine-Funktion: bary2-Eigenschaft für Sterne ermöglicht hierarchische Mehrkörpersysteme (innere Umlaufbahn zusätzlich zur äußeren); innere Orbitlinie folgt dem äußeren Schwerpunkt
- 4 neue Sternensysteme hinzugefügt: DX Cancri (#21), Epsilon Indi (#22+23), Tau Ceti (#24) und GJ 1061 (#25)
- Epsilon Indi: K-Stern mit direkt abgebildetem Super-Jupiter (JWST 2024, kältester bekannter Exoplanet) und Braunem Zwerg-Paar (Ba/Bb) in 1460 AU Abstand
- Tau Ceti: Sonnenähnlicher G-Stern mit 4 Super-Erden (darunter 2 in/nahe der habitablen Zone) sowie massiver Trümmerscheibe (10–90 AU)
- GJ 1061: Ruhiger Roter Zwerg mit 3 felsigen Super-Erden, 2 davon in der habitablen Zone
- Wolken rotieren mit Planet (cloudMesh per applyRotation); Beleuchtung der Wolken (lightDir Uniform, Nachtseite dunkel); vWorldNormal für korrekte Lichtberechnung
- Gasriesen-Wolken: drift=t*6 auf alle fbm-Samples; Threshold 0.38–0.60 (mehr Bedeckung)
- Gasriesen: sparse fbm-Flecken statt durchgehender Bänder (threshold 0.52–0.70); terrestrische Wolken: schnellerer Drift (t*8)
- Gasriesen: horizontale Bänder mit Turbulenz statt Wolkenflecken; terrestrische Wolken: einheitliche Driftrichtung (sichtbare Bewegung); Farbe stärker getönt
- Wolken: triplanare Projektion (keine Naht mehr), Bedeckung reduziert (smoothstep 0.42–0.62, opacity 0.35), Atmosphärenfarbe eingemischt
- Wolken: renderOrder:999 + depthTest:false explizit auf Material gesetzt; Schwellwert weiter gesenkt, Opacity erhöht
- Cloud-Shader: vLocalPos statt vWorldPos (zuverlässiger in Child-Mesh-Hierarchie), Opacity 0.70
- Atmosphäre zwei Passes: BackSide-Kugel für Limb-Glow + separate FrontSide-Kugel mit depthTest:false für Wolken sichtbar über Planetoberfläche
- Atmosphären-Shader: side:BackSide statt FrontSide — Innenseite der Kugel rendert um den Planeten herum statt davor; Normalen-Fix für korrekte Rim-Berechnung
- Wolken-Shader: Schwellwert von 0.45 auf 0.32 gesenkt (deckt ~40% der Oberfläche), Kontrast erhöht
- Wolken auf Atmosphärenkugeln: prozedurales fBm-Noise im Fragment-Shader (3 Oktaven, smoothstep); langsame Rotation über time-Uniform; kein CPU-Overhead
- Atmosphärenkugeln: Custom GLSL Shader mit Limb-Glow-Effekt — Zentrum transparent, Rand leuchtend (pow(rim, 2.8) * 0.55)
- Atmosphärenkugel: Radius r+20 → r*1.12 (12% größer als Objekt statt absoluter Offset)
- Bugfix: lel in Asteroiden- und Zwergplaneten-Builder wiederhergestellt; vollständiges Audit — Syntax OK, alle Variablen deklariert
- Bugfix: mHit in buildMoon wiederhergestellt; vollständiges Audit aller Deklarationen — keine weiteren fehlenden Variablen
- Bugfix: let ring = null ebenfalls wiederhergestellt
- Bugfix V3.14: hitMesh-Deklarationen für Planeten, Asteroiden und Zwerge versehentlich entfernt → wiederhergestellt
- 3D-Atmosphärenkugel für Objekte mit echter Atmosphäre (pressure > 1e-10 bar): transparente Kugel +20px Radius, Farbe = dominantes Gas, opacity 0.13; Planeten, Monde, Zwerge, Asteroiden
- Exoplaneten ohne Atmosphäredaten: Titel "Atmosphäre unbekannt", Bogen wie Exosphäre, Druckzeiger zeigt "??? bar"
- Atmosphärendaten für Zwergplaneten: Pluto (1×10⁻⁵ bar, N₂ 99.5%, CH₄ 0.5% – New Horizons 2015); Ceres/Haumea/Makemake/Eris: Exosphäre; Asteroiden Vesta/Pallas/Hygiea: Exosphäre
- Erdmond: atmosphere korrekt eingefügt (Python-Script hatte es fälschlich in CAT-Definition geschrieben); CAT-Korruption bereinigt
- Bugfix: hasComp vor erster Verwendung deklariert (TDZ-Fehler)
- Titel "Exosphäre" statt "Atmosphäre" wenn keine Zusammensetzung erfasst; Atmosphärendaten für alle 21 Monde (Titan, Triton, Io, Europa, Ganymede, Callisto, Rhea, Dione, Titania mit Zusammensetzung; Rest als Exosphäre)
- "bar" Formatierung zurückgesetzt; Pfeilkopf breiter (40px) und flacher (14px); Labels nach allen Bogensegmenten gerendert (kein Verdecken mehr)
- Drucklabel 3px nach oben; "bar" kleiner (9px) neben der Zahl (12.5px)
- Zeiger 4px kürzer; Label tiefer im Schaft; Merkur-Druck "≈ 0 bar" statt unleserlichem Exponentialwert
- Zeiger/Wellenlinien: untere Kante auf Bogenkante ausgerichtet (cy); Zeiger nochmals breiter (34px Kopf, 18px Schaft)
- Druckzeiger und Wellenlinien in der freien Fläche des Halbkreises; Zeiger größer (44px), Label im oberen Schaftdrittel; Wellenlinien mit Quadratic Bezier (kein Bug am rechten Ende)
- Druckanzeige im Atmosphären-Panel: Pfeil nach unten mit Druckwert-Label für feste Planeten; Wellenlinien für Gasriesen (kein Oberflächendruck)
- Labels größer (12.5px); mehr Abstand zwischen Titel "Atmosphäre" und Bogenkante
- Doppelter "Atmosphäre"-Titel entfernt; Labels größer (10.5px); Gase alphabetisch sortiert; überlappende Labels radial versetzt
- Atmosphären-Labels auf dem Segment platziert (mid-ring), Pill-Style (dunkler Hintergrund, weißer Text) wie Sternlabels; Titel "Atmosphäre" über dem Bogen; alle Labels immer sichtbar
- Panel2 auf 320px verbreitert; SVG-Höhe mit Puffer für Labels über dem Bogen; Bogen-Geometrie mit korrekten Sweep-Flags
- Atmosphärendiagramm: Sweep-Flags korrigiert (äußerer Bogen sweep=1, innerer sweep=0) → korrekte ∩-Form
- Atmosphärendiagramm: Geometrie korrigiert (∩-Form, Bogen nach oben), Labels außerhalb des Rings in schwarz, korrekte Segmentverteilung
- Infopanel2: Atmosphären-Halbkreis-Diagramm mit farbigen Segmenten je Komponente; Ringdicke proportional zum Atmosphärendruck (logarithmisch); Labels auf Segmenten
- ATMO_COLORS Farbpalette für alle Komponenten (N₂, O₂, CO₂, Ar, H₂, He, CH₄ etc.)
- Atmosphärendaten für alle 8 Planeten: atmosphere.pressure (bar, NASA) und atmosphere.composition (Gase ≥1%, Quelle: NASA NSSDC)
- Merkur: 5×10⁻¹⁵ bar (quasi keine Atmosphäre); Gasriesen: pressure null (kein fester Boden)
- Konsolidierung: moons:[] bei 4 Exoplaneten ergänzt; Feldanordnung bei Gliese 725 und Groombridge 34 Planeten vereinheitlicht; vollständiger Integritäts-Check bestanden
- Temperaturpanel Exoplaneten: Gleichgewichtstemperatur (Teq, A=0.3) zentral groß, berechnete Min/Max-Werte seitlich kleiner; tempEq für alle 21 Exoplaneten eingetragen
- Kelvin/Celsius-Check: alle Werte korrekt; Lacaille 9352 e korrigiert (falsche Leuchtkraft in Berechnung → Tagseite war +14°C statt +300°C)
- Dysnomia: tempMin/tempMax ergänzt; alle Exoplaneten-Temperaturen auf Basis der Gleichgewichtstemperatur (Teq) aus ESPRESSO/NASA-Papers korrigiert
- Gebundene Planeten: Min = Nachtseite (~−230°C), Max = Tagseite (Teq×1.2)
- Temperaturpanel: gestrichelte Verbindungslinie ergänzt; fehlende tempMin/tempMax für Mond, Deimos, Callisto, Tethys, Ariel, Nereid nachgetragen
- Temperaturpanel (#astro-info2) für alle Nicht-Stern-Objekte: zeigt Min/Max °C links unter dem Objekt
- Temperaturdaten (tempMin/tempMax) für alle 52 Objekte eingetragen – Planeten, Monde, Zwerge, Asteroiden, Exoplaneten
- Oberflächentemperatur (K) für alle 30 Sterne eingetragen und im Infopanel angezeigt
- Mobile Systemübersicht: 1. Tap zeigt Distanzlinien, 2. Tap auf denselben Stern wechselt ins System; Tap auf leere Fläche schließt Linien
- "Gebunden (synchron)" → "gebunden" (konsistent mit Mondanzeige)
- Neue Anzeige "Gebunden (synchron)" für tidally locked Exoplaneten; 15 Planeten entsprechend markiert (Proxima b/d, Barnard d/b/c/e, Wolf 359 c, Lalande b, Ross 128 b, Lacaille e/b/c, Gliese 725 A+B b, Groombridge Ab)
- Rotationsperioden der neuen terrestrischen Exoplaneten auf null (unbekannt) gesetzt – Anzeige zeigt korrekt "–" statt falscher Werte
- Prokyon B: Spektralklasse DQZ (Weißer Zwerg), Infopanel zeigt jetzt "Weißer Zwerg" korrekt an; D-Klasse in lumClass-Logik ergänzt
- Planetenbahnen: inc/lan waren in Grad statt Radians — alle neuen Planeten korrigiert
- Alle neuen Planeten haben rotationPeriod; 61 Cygni und Prokyon Schwerpunktsradien angepasst
- Systeme #16–19 hinzugefügt: 61 Cygni (K5+K7, 659-J-Binär), Prokyon (F5-Subgiant + Weißer Zwerg), Gliese 725/Struve 2398 (2×Roter Zwerg, je 1 Planet), Groombridge 34 (2×Roter Zwerg, 2 Planeten um A)
- Code-Bereinigung: 2 stray </div> Tags entfernt, tote Funktionen (_countSystemTextures, _preloadUrl, _preloadKey) und Felder (baryAngle) entfernt
- CAM_BASE_DIST Konstante eingeführt (war hardcoded 900), halfFovTan aus dem forEach-Loop herausgezogen
- Verbindungslinien zeigen nicht mehr in falsche Richtung – Sterne hinter der Kamera werden sauber ausgeblendet statt NDC-Wraparound zu produzieren
- Verbindungslinien immer gezeichnet, unabhängig von Kameraposition – Linien verschwinden nicht mehr beim Ranzoomen
- Linien verschwinden nicht mehr beim Ranzoomen – Dot-Product statt NDC-Z für Kamerarückseiten-Check
- Hover-Linien werden während Autozoom blockiert
- Verbindungslinien verschwinden nicht mehr beim Ranzoomen
- Linien und Hover während Autozoom deaktiviert
- Label-Abstand perspektivisch korrekt berechnet – Labels nicht mehr im Stern
- Übersicht bereinigt: kaputtes HTML-Tag war seit V2.69 Ursache aller Positions-Probleme; alle unnötigen Matrix-Fixes entfernt; Linien verschwinden nicht mehr beim Zoomen
- Verbindungslinien und Labels auf exakten Sternpositionen – matrixWorldInverse nach render() explizit invertiert, Screenkoordinaten von mesh.getWorldPosition() statt project()
- Label-Offset mit direkter Perspektivformel berechnet statt project() – korrekte Skalierung bei Zoom
- _worldToScreen invertiert matrixWorldInverse vor project() explizit
- Labels, Verbindungslinien und Hover korrekt auf Sternen – camera.matrixWorldInverse wird nach updateMatrixWorld() manuell invertiert (Three.js r128 tut dies nicht automatisch)
- Labels in Systemübersicht korrekt über Sternen – Pixel-Offset wird aus projiziertem Sternradius berechnet statt fixer 3D-Unit-Offset
- Verbindungslinien und Labels korrekt auf Sternen positioniert – Label- und Linienberechnung erfolgt nach Kamera-Update
- Verbindungslinien und Hover-Erkennung ohne vertikales Offset – Kamera-Matrix wird vor Projektion und Raycasting aktualisiert
- Systemübersicht: Hover auf Stern zeigt gestrichelte Verbindungslinien zu Nachbarsystemen (max. 10 Lj) mit Distanzangabe
- Panel-Icons: Mond rechts oben vom Planeten positioniert, Zoom als Fadenkreuz, Control als Schieberegler-Symbol
- Lichtintensität der Sterne reduziert – Texturen werden nicht mehr überblendet
- Shininess der Planeten verringert für weicheres Lichtverhalten
- Planeten- und Mond-Labels durch SVG-Icons ersetzt – Panel auf Mobile kompakter
- Sterne in der Systemübersicht zeigen dieselben Texturen wie in der Systemansicht
- Zoom-In auf Sol: Endpunkt weiter vom Stern entfernt – kein Aufblitzen des Glows mehr
- System wird immer mit Standardzoom geladen, unabhängig vom Zoom in der Systemübersicht
- Zurück zur Systemübersicht mit smoothem Zoom-Out-Übergang
- Ladevorgang lädt direkt alle Texturen ohne Sol-System zu bauen – Übersicht erscheint sauber ohne Zwischenschritt
- Bugfix: Klick auf Übersichtsstern funktioniert (tgt.pos → tgt.getPos())
- Gestaffelter Hintergrund-Preload entfernt (nicht mehr nötig)
- Bugfix: Smooth-Zoom-Übergang funktioniert jetzt korrekt (isOverview-Early-Return blockierte den overview-zoom-Modus)
- Zurück-Button schließt Infopanel und setzt Kamera-Modus zurück
- Veraltetes CSS für back-btn entfernt
- Ladebildschirm → direkt Systemübersicht (Sol-System während Ladevorgang unsichtbar)
- Zurück-Button ins Panel integriert (← links, eigener Abschnitt), "Planeten" → "Pl." für Kompaktheit
- Smooth-Zoom-Übergang von Übersicht zu System beim Klick auf einen Stern
- Systemübersicht: neue Startszene nach dem Ladevorgang mit allen Sternen korrekt positioniert (RA/Dec/Distanz)
- Klick auf Stern lädt das zugehörige System, "← Systemübersicht"-Button kehrt zurück
- Toter Code entfernt: hzRing-Referenz im Animate-Loop
- Code-Konsolidierung: ungenutztes baryAngle-Feld entfernt, doppeltes rKm bei Charon bereinigt
- Wolf 359 b/c, Lalande b/c, Ross 128 b: hardcoded dist durch korrekte AU()-Werte ersetzt, subcat und color vereinheitlicht
- Massenkonstanten (MJ_IN_EARTH, SOL_IN_EARTH, ML_PER_EARTH) als globale Konstanten definiert, alle Wiederholungen im Code ersetzt
- _countSolTextures zu _countSystemTextures(sys) verallgemeinert
- Rektaszension und Deklination (J2000.0) für alle 30 Sterne in den Daten erfasst
- Infopanel zeigt RA/Dec im klassischen Format (h m s / ° ′ ″)
- Epsilon Eridani: innerer Asteroidengürtel auf 2–3 AU korrigiert – Epsilon Eridani b (3.5 AU) liegt jetzt korrekt knapp außerhalb
- Epsilon Eridani: 3 bestätigte Gürtel eingetragen – innerer Asteroidengürtel (2–4 AU), äußerer Asteroidengürtel (17–22 AU), Trümmergürtel (35–90 AU)
- Alle anderen eingetragenen Systeme ohne bestätigte Gürtel (Wolf 359, Ross 128, Lacaille 9352 u.a. – kein Infrarot-Überschuss detektiert)
- Kuiper-Gürtel (30–50 AU) im Sonnensystem als Kleinkörpergürtel eingezeichnet
- Neue Zonentypen: Kleinkörpergürtel (grau) und Trümmergürtel (bläulich)
- Scatter-Textur parametrisiert – Kleinkörpergürtel und Trümmergürtel sind klumpiger und spärlicher als der Asteroidengürtel
- Doppeltap-Zoom auf deaktivierten Buttons behoben – Sperre gilt jetzt immer für gesamtes UI-Panel
- Doppeltap-Sperre nur noch auf WebGL-Canvas und UI-Hintergrund – Buttons wieder tappbar
- Hintergrund-Preload gestaffelt (ein System alle 1.2s, Start nach 2s) – kein Ruckeln mehr nach dem Ladevorgang
- iPad-Crash behoben: Canvas-Textur auf Mobile halbiert (512×128), Punktzahl reduziert, Zeichenoperationen gebündelt
- RingGeometry-Segmente auf Mobile reduziert (128 statt 256)
- Doppeltap-Zoom auf iPad blockiert (gesamtes Dokument, inkl. moderne iPad-Erkennung)
- Habitable Zone an Elternstern gebunden – folgt korrekt Proxima Centauri bzw. dem jeweiligen Stern
- Habitable Zone in Zonen-System integriert – wird automatisch pro Stern berechnet und als Zone gerendert
- Label "Habitable Zone" in grün, Label "Hauptasteroidengürtel" in braun
- Label Hauptasteroidengürtel exakt zentriert (vertikal + horizontal)
- Textur in Polarkoordinaten gerendert – keine radialen Streifen mehr, Partikel verlaufen ringförmig
- Punktdichte auf 22.000 erhöht, 80 Helligkeits-Cluster
- Asteroidengürtel umbenannt auf "Hauptasteroidengürtel"
- Label in Ringmitte positioniert (in Kamerarichtung)
- Asteroidengürtel mit prozeduraler Noise-Textur (Punkte/Cluster) für organischeres Aussehen
- Neuer Objekttyp "Bereich" (Zone) mit Unterkategorie "Asteroidengürtel"
- Hauptasteroidengürtel (2.06–3.27 AU) im Sonnensystem als halbtransparenter Ring eingezeichnet
- Lacaille 9352: Planetenabstände auf korrekte AU()-Werte gesetzt – Planet d jetzt sichtbar in der habitablen Zone
- EZ Aquarii: Struktur korrigiert – A+C enges Paar (3.786 d), B in großer äußerer Bahn um AC (2.25 J, ~1.22 AU)
- Lacaille 9352: Spektralklasse auf M0.5V korrigiert, Planeten d und e ergänzt (4 bestätigt, Hartogh 2026) – Planet d in habitabler Zone
- EZ Aquarii: hierarchische Struktur korrigiert – A und C als enges inneres Binär (3.79 d), B in großer äußerer Bahn um AC (2.25 J)
- 5 neue Systeme #11–#15: Ross 248, Epsilon Eridani, Lacaille 9352, Ross 128, EZ Aquarii
- Exoplaneten: Epsilon Eridani b (0.98 MJ), Lacaille 9352 b+c (4.2/7.6 M⊕), Ross 128 b (1.40 M⊕)
- EZ Aquarii als Dreifachsystem (A/B/C) implementiert
- Masse der Asteroiden im Infopanel ergänzt
- Asteroiden-Typen eingeführt: C-, S-, M-, B-, V-Typ
- Vesta (V-Typ), Pallas (B-Typ), Hygiea (C-Typ) zugewiesen
- Infopanel für Asteroiden aktiviert (Typ, Radius, Distanz, Umlaufzeit)
- Larissa als viertgrößter Neptunmond hinzugefügt (rKm 97, Periode 0.55 d)
- Masse aller Monde im Infopanel ergänzt
- Versionsanzeige ist nun ein Link zur Versionshistorie
- Texturen beim Systemwechsel ohne Verzögerung: GPU-Upload direkt beim Laden erzwungen
- Ladetext geändert auf "Ladevorgang"
- Texturen anderer Systeme werden sofort (ohne Verzögerung) im Hintergrund geladen
- Ladebildschirm beim Start: Texturen werden vollständig geladen bevor das Sonnensystem erscheint
- Fortschrittsbalken zeigt Ladestand, sanftes Einblenden danach
- Texturen der anderen Systeme werden im Hintergrund vorgeladen
- Infopanel für Charon (Pluto-Begleiter) repariert
- Proxima Centauri startet näher an Alpha Centauri A/B (bessere Darstellung auf kleinen Bildschirmen)
- Weitere Fehlerkorrekturen Rotation für tidally locked Monde
- Fehlerkorrekturen für Umlaufzeit von Monden
- Fehler Radius Erdmond behoben
- Fehler Rotation für tidally locked Monde behoben
- Fehler behoben für Umlaufzeit und Radius von Monden
- Infopanel für Monde eingebaut
- distanceToSol für alle 15 Sterne erfasst (Lichtjahre)
- Infopanel zeigt Entfernung für Sterne (Sonne zeigt –)
- Infopanel Leader Line: Ankerpunkt wechselt automatisch (links/mitte → unten/mitte bei wenig Platz)
- Schwellenwert: horizGap kleiner 60% Panelbreite (mobil Portrait)
- Infopanel Mobile-Anpassungen (pointer:coarse, max-width:500px)
- Breite 260px→195px, Padding reduziert, Hintergrund transparenter (0.78→0.55)
- #hud width: max-content (Systemlabel bricht nicht mehr um)
- #systemLabel white-space: nowrap
- Glow-Schalen: Canvas-Radialgradienten-Sprites statt harter Kugeln
- Additives Blending, weicher Abfall (4 Stops: 0%/35%/65%/100%)
- Ambient/Fill auf Originalwerte zurückgesetzt (Planeten beide Seiten sichtbar)
- Drei Glow-Schalen mit luminositätsabhängiger Größe/Opazität
- PointLight.intensity logarithmisch aus Luminosität
- Ambient 0.18→0.06, Fill 0.6→0.25 (stärkere Schatten)
- Leuchtkraftklasse differenziert: M+V=Roter Zwerg, K+V=Oranger Zwerg, G+V=Gelber Zwerg
- Planetenzählung nach parentStar gefiltert (Proxima:3, α Cen A/B:0)
- Spektralklassen korrigiert (Sirius B: DA2VII, Luhman: L7/T0.5, WISE: Y2)
- Sternmassen hinzugefügt (M☉/MJ)
- Leuchtkraftklasse aus Suffix abgeleitet (V=Hauptreihe, VII=Weißer Zwerg, kein Suffix=Brauner Zwerg)
- Rotationsdauer Exoplaneten (Wolf 359/Lalande: gebunden/–)
- Stern-Infopanel: Spektralklasse, Farbe (colorName), Sternbild, Planetenzahl, absolute/scheinbare Helligkeit
- 15 Sterne mit constellationName, absoluteMagnitude, relativeMagnitude erfasst
- Massenanzeige-Leiter: <0.01 M⊕→M☽, 0.01–317.8 M⊕→M⊕, >317.8 M⊕→MJ, >333000 M⊕→M☉
- Jupiter selbst in Erdmassen (317.8 M⊕)
- Ceres: Asteroid→Zwergplanet (rotationPeriod, massEarth, moonCount)
- Zwergplaneten-Subkategorien: Hauptgürtelobjekt (Ceres), Plutino (Pluto), Cubewano (Haumea/Makemake), SDO (Eris)
- Massenanzeige mit M☽ für kleine Objekte
- Infopanel für Zwergplaneten aktiviert
- Alle 5 Zwergplaneten mit vollständigen Daten (radius, massEarth, moonCount)
- Infopanel Breite 210px→260px
- moonCount: null für Exoplaneten → Anzeige "(unbekannt)"
- Eisriese-Subcategory (icegiant) für Uranus/Neptun/Proxima c/Lalande c
- 6 neue Sternensysteme #5–#10 (WISE 0855, Wolf 359, Lalande 21185, Sirius, Luyten 726-8, Ross 154)
- Spektralklasse D (Weißer Zwerg) für Sirius B
- Luhman 16-System (L7.5/T0.5 Braune Zwerge)
- Neue Spektralklassen L/T/Y mit Farben/Radius/Luminosität
- Binärsystem mit 25-Jahre-Periode
- touch-action: manipulation auf #ui/Buttons (iOS 300ms Tap-Verzögerung entfernt)
- iOS Double-Tap-Zoom-Bug fix: visualViewport API, resize-Listener, Panel-Taps blockiert
- Planetenabstände korrigiert (AU-Formel für Proxima/Barnard-Planeten)
- HZ-Berechnung war korrekt, Planeten standen an falschen Positionen
- HZ-Ring sichtbarer: opacity 0.07→0.13, zwei grüne Randlinien (opacity 0.55)
- Sternspezifische Luminositäten (Proxima: 0.00155, Barnard: 0.00346)
- Proxima b jetzt korrekt in HZ, Barnard-Planeten zu nah (zu heiß)
- HZ-Ringe nur für Sterne mit Planeten (filter nach parentStar)
- HZ-Ringe nur für Sterne mit Planeten vorbereitet
- Habitable Zone implementiert (Kopparapu-Formel, grün transparenter Ring)
- Luminosität pro Spektralklasse, AU-Umrechnung
- Barnard's Stern-System (M4V) mit 4 Exoplaneten (b/c/d/e, 2024–2025 bestätigt)
- Keys bestehender Systeme: -system Suffix
- Mobile BRIGHT-Farben deutlich stärker (Planet: 0xaaaaff, Mond: 0x8888ff, Asteroid: 0xffaa44, Dwarf: 0x66ccff)
- Mobile Orbit-Farben heller (2×)
- Rigel/Toliman Orbitlinien hinzugefügt
- Proxima Orbitlinie beim Fokus hervorhebbar
- Schwerpunkt zwischen α Cen A/B grau eingezeichnet
- subcategory-Planet-Textur-Bug fix (terrestrial/gasgiant)
- Fallback-Kette: key.jpg → subcategory-planet-.jpg → category-planet.jpg
- Proxima startM=π/2 (halbwegs zwischen Periapsis/Apoapsis)
- Proxima startM=π (Apoapsis, fernster Punkt)
- Proxima-Bahn neu kalibriert (a=300, ecc=0.60 → Periapsis 120, Apoapsis 480)
- Proxima-Bahn elliptischer (ecc 0.30→0.75), startM=0 (Periapsis)
- M-Klasse Radius 16→8 (realistischer), Proxima dist 14→18
- Proxima Exoplaneten (b/c/d) mit parentStar-Mechanismus
- Proxima c als Kandidat (?) markiert
- Stern-Labels: weißer Text auf halbtransparentem schwarzen Pill (lesbar auf jedem Hintergrund)
- Proxima-Bahn: inc 107.6°→20°, lan 126°→45°, ecc 0.5→0.3 (flacher)
- Proxima Centauri (M5V) als dritter Stern im Alpha Centauri-System
- Elliptische Bahn (a=450, ecc=0.5, inc=107.6°, lan=126°), Periode 550.000 Jahre
- Binärsystem: sys._baryAngle geteilt, Stern A+B immer gegenüberliegend (phaseOffset π)
- Korrektur visueller Kompromiss
- Alpha Centauri A/B Separation 120 Units (visueller Kompromiss)
- A: orbitR=54, B: orbitR=66 (Massenverhältnis 1.10:0.90)
- Alpha Centauri Binärsystem (barycenter-Mechanismus wie Pluto-Charon)
- Rigel Centaurus (A): orbitR=18, Toliman (B): orbitR=22, Periode 79.91 Jahre
- Proxima Centauri → Alpha Centauri-System umbenannt
- Rigel Centaurus (G2V) + Toliman (K1V) hinzugefügt
- Sonne: spectralClass 'G2V'
- Spektralklassen-Parsing: nur erstes Zeichen als Subkategorie-Key
- Texture-Fallback: key.jpg → subcategory--.jpg → category-.jpg
- Medium-Sterne 3px→5px (Sprite-Gradient sichtbar ab ~4–5px)
- Sehr helle Sterne 12px→7px, Opacity 0.90→0.85
- Medium 6px→3px / 0.80→0.64, sehr hell 12px→5px / 0.90→0.72
- Runde Glow-Sprites via Canvas-Textur (radialer Gradient)
- Faint-Opacity 0.35→0.5, Sprite-Größen: faint 1px, medium 3.5px, sehr hell 6px
- Drei Helligkeitsebenen: Faint (88%, 1px, 0.35), Medium (9%, 2.5px, 0.75), Sehr hell (3%, 4px, 0.95)
- sizeAttenuation: true aktiviert
- Hintergrundstern-Farben entsättigt (natürlicherer Himmel)
- Größenvariation verstärkt (faint 92%→88%, helle Ausreißer bis 7.5px)
- Verbesserter Sternenhintergrund: sphärische Verteilung (Marsaglia)
- Farbvariation nach Spektralklassen, Größenvariation (92%/7%/1%), 10.000 Sterne
- Stern-Label-Fokus-Farbe: wenn Basisfarbe schwarz → nur font-weight:bold, keine Farbänderung
- Stern-Label positioniert über positionLabel auf projizierte Weltposition (0,0,0) + translate(-50%,-50%)
- Stern-Label zentriert (star-label CSS, position:fixed, left:50%, top:50%)
- Fokus-Farbe bei Sternen: nur font-weight:bold (schwarz auf gelb unleserlich)
- Spektralklassen O→M (blau→rot, groß→klein) mit Farbe/Radius/Licht
- Licht/Glow-Mesh an Pivot gebunden (für Multi-Stern-Systeme)
- Stern-Labels schwarz (rgba(0,0,0,0.9))
- Glow-Leak fix: Glow-Mesh als glowMesh im Star-Objekt gespeichert, beim Unload entfernt
- Geschwindigkeitswerte .val 13px→11px Arial
- Kompletter Neuaufbau von Grund auf (Scoping-Fehler behoben)
- Struktur komplett Überarbeitet mit Scene Setup, Kamera, Focus, Input, Animation
- positionLabel/makeLabel/buildMoon aus loadStarSystem herausgezogen (globale Ebene)
- Licht-Akkumulation fix: Snapshot der Arrays, sofortiges Leeren, dann Mesh-Entfernung
- Race condition fix: Arrays zuerst leeren, dann DOM-Entfernung
- positionLabel: el.isConnected Check vor style-Zugriff
- clearAllFocus() in unloadCurrentSystem durch Inline-Code ersetzt
- mode/focusTgt vor unloadCurrentSystem deklariert
- labelRegistry vor unloadCurrentSystem deklariert
- loadStarSystem(id) Architektur: unloadCurrentSystem() + loadStarSystem(id)
- Nav-Buttons rufen loadStarSystem() auf
- Proxima Centauri als zweites System (ID=2, key='proxima')
- ›-Button aktiv
- .val user-select:none
- Zoom/Speed-Buttons an Grenzen deaktiviert (min/max)
- Deaktivierte Buttons: dunkles Grau, schwacher Rahmen, blasser Text, kein Hover
- starSystemID Variable (default 1)
- „Pause" → „Control"
- ‹/› Buttons für System-Navigation (deaktiviert bei first/last)
- .group-label user-select:none
- Systemtitel #systemLabel zentral oben (18px, sys.name)
- name: 'Sol-System', key: 'sol'
- Saubere starsystems-Hierarchie (keine _sol*-Variablen mehr)
- const sys = starsystems[0]
- starsystems-Hierarchie eingeführt (starsystems[0] mit stars/planets/asteroids/dwarfs)
- Aliase starsData/planetsData/etc. bleiben für Code-Kompatibilität
- gas_giant → gasgiant (ohne Unterstrich)
- TERR_SC/GAS_SC/AST_SC/DWARF_SC entfernt
- categoryData.scaleKm/minR pro Kategorie
- Planet-Subcategories: terrestrial (0.000625, min 2.5), gasgiant (0.0002125, min 8)
- scaleR()-Funktion für einheitliche Radiusberechnung
- Code-Bereinigung: sunMesh/sunHit/CAT_BY_LT entfernt
- Kommentare aktualisiert (rotationPeriod, axisTilt)
- Euler-Reihenfolge ZYX (Neigung Z vor Rotation Y)
- Uranus-Textur mit horizontalen Linien zeigt jetzt korrekte „Roll"-Bewegung
- getPos()-Bug fix: alle Lambdas zeigen auf pivot.position statt mesh.position
- Achsenneigung mit realen Daten (axisTilt in Grad)
- Pivot-Object3D für jedes Mesh, rotation.z = Neigung, rotation.y = Eigenrotation
- HIT_MULT.sun Alias entfernt, direkt HIT_MULT.star im Code
- HIT_MULT.sun undefined Bug fix (Array nur mit star/planet/moon/asteroid/dwarf)
- sd.r undefined = NaN → Geometrie-Fehler
- Defensive Guards in makeOrbitLine/makeEllipticOrbitLine (NaN/undefined-Checks)
- categoryData zentralisiert (labelColor, labelSize, orbitColor, orbitColorDim, hitMult)
- Alte Konstanten (LCOLOR, LSIZE, HIT_MULT, DIM_, BRIGHT_) daraus abgeleitet
- categoryData ganz oben vor jeder Verwendung
- BASE_SPEED 0.05→0.025 halbiert
- Defaults zurück auf 1× für Planeten und Monde
- Eigenrotation mit realen Perioden (rotationPeriod in Tagen)
- Negative Werte = retrograd (Venus, Uranus)
- Monde tidally locked (Rotationsperiode = Umlaufzeit)
- applyRotation() skaliert mit Planeten-Speedregler
- categoryData mit Kategorie-Fallback für Texturen
- Ladereihenfolge: key.jpg → category-.jpg → Fallbackfarbe
- category-moon.jpg auf alle Monde anwendbar
- TEXTURE_BASE_URL auf https://astroviewer.x-core.workers.dev/images/ aktualisiert
- Alle Himmelskörper haben key (fehlende: Rhea, Dione, Tethys, Titania, Oberon, Umbriel, Ariel, Proteus, Nereid, Ceres, Vesta, Pallas, Hygiea, Dysnomia)
- Textur-System mit key-Property (automatische URL-Zusammensetzung)
- TEXTURE_BASE_URL zentral anpassbar
- Canvas-Ansatz für Cross-Origin-Texturen versucht (Image→Canvas→CanvasTexture)
- crossOrigin='anonymous' gesetzt, Fehler-Callback hinzugefügt
- Textur-Loading fix: Fallback-color sofort sichtbar, Textur im Callback angewendet, color auf 0xffffff
- Textur-Support eingeführt (makeMaterial(color, textureUrl, opts))
- texture-Property optional bei allen Objekttypen
- Sonne: texture:'https://astroviewer.netlify.app/images/sun.jpg'
- SUN_R entfernt (toter Code)
- starsData eingeführt (alle Sonneneigenschaften als Daten)
- starObjects iteriert über starsData[0]
- SUN_R aus starsData[0].r abgeleitet
- Startgeschwindigkeiten: Planeten 0.5×, Monde 0.1×
- Uranus-Ringe: dunkelblaugrau, 18% Deckkraft
- Neptun-Ringe: neu, sehr dunkel (10% Deckkraft)
- Ring-Logik: opacity als optionales Datenfeld
- Uranusringe hinzugefügt (Neigung 97.77°, blaugrau)
- Mondgeschwindigkeit fix: updateMoon() verwendet direkt BASE_SPEED × SPEEDS × MOON_SPEEDS
- Pluto-Charon konsistent mit Planeten/Monden-Reglern
- Vollständiges Refactoring: Alle Sonderfälle datatengesteuert
- Ringe → ring:{inner, outer, tilt, color} in planetsData
- Elliptische Monde (Nereid) → ecc in moon-Daten, generischer buildMoon()-Handler
- Dwarf-Monde (Dysnomia) → moons:[...] direkt in dwarfData
- Binärsysteme (Pluto-Charon) → bary:{primaryR, companion:{...}} in dwarfData
- Generische updateMoon()-Funktion (circular/elliptic automatisch)
- Nereid (Neptunmond) mit echter elliptischer Bahn (ecc=0.7512)
- Keplersche Gleichung iterativ gelöst
- Neue Funktionen: makeEllipticOrbitLine(), ellipticOrbitPos()
- Ausrichtung: beide Labels (Zoom/Pause) min-width:36px
- II zentriert: display:flex mit align-items + justify-content:center
- Pause-Icon: II/▶ als einfache Textzeichen (kein iOS-Emoji)
- Alle Buttons feste Breite 32px
- Pause-Button feste Breite 36px (kein Größenwechsel beim Klick)
- Auto-Zoom zeigt nur 🔍 (kein Text "Auto")
- Schwerpunkt-Label grau, kleiner (9px, 60% Deckkraft)
- UI-Redesign: Pause in Zoom-Sektion, Buttons schmaler (7px 10px), Faktoren 15px (gleiche Größe wie Rest)
- Dysnomia (Eris-Mond): Periode 15.786 Tage,
- Umbenennung des Artifacts in "astroviewer.html"
- Download-Dateiname bleibt trotz Umbenennung "solar-system.html" (Browser-Limitierung)
- Versionsanzeige auf V1.20 aktualisiert
- Versionsanzeige auf V1.18 korrigiert (manuelle Anpassung)
- Versionsanzeige auf V1.16 korrigiert (DOM-Struktur-Fix)
- Versionslabel "V1.16" dezent unten rechts eingefügt
- Fehler: `labelsEl is null` durch falsche HTML-Reihenfolge behoben
- Tap-Problem auf Mobilgeräten behoben (Raycaster-Sortierung nach Distanz)
- `isTouchClick`-Flag zur Unterscheidung von Touch/Mouse-Events
- Tap-Fokus auf Sonne auf Mobilgeräten behoben (Raycaster-Logik angepasst)
- Mobilgeräte-Tap-Logik verbessert (entfernungsbasierte Tap-Erkennung)
- Titel im Browser-Tab auf "AstroViewer" umbenannt
- Auto-Zoom-Button-Höhe an andere Schalter angepasst (Padding-Fix)
- Auto-Zoom-Button exakt unter Zoom-Buttons ausgerichtet (Flex-Layout-Fix)
- Auto-Zoom-Button unter Zoom-Buttons platziert (CSS-Grid-Anpassung)
- Steuerungspanel optimiert: Pause-Button nur noch Symbol, Auto-Zoom mit Lupensymbol
- Orbit-Linien-Helligkeit mobilgerätespezifisch angepasst (Media Query `pointer:coarse`)
- Orbit-Linien auf Mobilgeräten heller (2x Helligkeit)
- Touch-Steuerung für Mobilgeräte implementiert (1-Finger-Drehung, 2-Finger-Pinch)
- Orbit-Linien allgemein heller (mobile Sichtbarkeit)
- Tap-Problem auf Mobilgeräten behoben (Raycaster-Koordinaten-Fix)
- Tap-Logik für Mobilgeräte überarbeitet (distanzbasierte Erkennung)
- Klick auf Labels funktioniert jetzt (Pointer-Events-Fix via `document.elementFromPoint`)
- Labels anklickbar gemacht (Pointer-Events-Konflikt behoben)
- Basisversion mit allen Planeten, Monden, Asteroiden und Zwergplaneten
- Kamerafokus-System, Orbit-Highlighting, Geschwindigkeitsregler
- Reale Orbitalparameter (Inklination, Knoten) für alle Objekte
- Pointer-Events-Konflikt zwischen Canvas und Labels behoben
- Klick-Erkennung auf Labels via `document.elementFromPoint` implementiert
- Labels mit höherem z-index als Canvas versehen
- Labels direkt an document.body angehängt (umgehender Container-Konflikt)
- Klick-Handler auf Labels zentralisiert (e.stopPropagation)
- Pointer-Events-Konflikt behoben (#labels pointer-events:none, Labels pointer-events:auto)
- Klick-Handler in makeLabel integriert
- Separate Event-Listener auf Objekten entfernt
- Pointer-Events-Konflikt zwischen Container und Labels analysiert
- Klick auf Labels getestet (funktioniert nicht)
- Klick-Handler auf Labels mit e.stopPropagation()
- Pointer-Events-Konflikt identifiziert (#labels blockiert Events)
- Klick auf Labels soll Fokus setzen (noch nicht funktionierend)
- Labels mit pointer-events:auto und cursor:pointer versehen
- Klick auf Labels getestet (funktioniert nicht)
- Label-Positionierung bei größerem Zoom getestet
- Klick auf Labels soll Fokus setzen (Feature-Anfrage)
- Label-System komplett neu geschrieben (keine CSS-Klassen mehr für Farben)
- Vollständiger Rewrite des Label-Systems (labelRegistry, positionLabel)
- display:none Initialisierung für Labels hinzugefügt
- Highlight via Inline-Style direkt gesetzt (setFocus)
- clearHighlight setzt originalen Inline-Color zurück
- makeLabel verwendet einzelne Klasse plus Inline-Farbe
- Label-Highlighting komplett über Inline-Styles (CSS-Klassen umgangen)
- e.preventDefault() auf mousedown, isDragging-Guard auf mouseup
- setFocus wird möglicherweise doppelt aufgerufen (Guard hinzugefügt)
- Inline-Styles in setFocus zurückgesetzt
- Debug-Console-Logs hinzugefügt
- Label-Findung via textContent-Matching (um labelEl-Referenzen zu umgehen)
- labelEl-Referenz in clickTargets direkt aus allLabelEls Index
- clearHighlight nur von Zoom-Button aufgerufen (setFocus macht eigenes Reset)
- clearHighlight und setFocus-Interferenz analysiert
- allLabelEls-Array statt querySelectorAll (direkte Iteration)
- querySelectorAll Scope-Problem identifiziert
- makeLabel-Funktion zentralisiert
- makeLabel-Call in Asteroiden-Build
- makeLabel-Call in Zwergplanet-Build
- makeLabel-Call in Planet-Build
- makeLabel-Call in Mond-Build
- makeLabel-Funktion eingeführt
- querySelectorAll Scope auf labelsEl begrenzt
- CSS konsolidiert + !important für .focused
- Kuiper-Gürtel hinzugefügt (Pluto, Haumea, Makemake, Eris)
- Dwarf animation im Render-Loop
- .dlabel CSS, clearHighlight und setFocus aktualisiert
- Dwarf planet Build-Loop hinzugefügt
- Dwarf planet Build-Loop vorbereitet
- Zwergplanet-Kategorie vorbereitet
- Kuiper-Gürtel-Feature angefragt
- Vollständiger Rewrite mit sauberer Label-Struktur
- Asteroiden-Labels via cssText fixiert
- Asteroiden-Radius erhöht (Mindestradius 3)
- asteroidsData Deklarations-Reihenfolge fixiert
- asteroidsData Referenzierungs-Fehler analysiert
- Asteroiden hinzugefügt (Ceres, Vesta, Pallas, Hygiea)
- Asteroid animation im Render-Loop
- clearHighlight für Asteroiden-Orbit-Farben aktualisiert
- Asteroid Build-Loop und clearHighlight aktualisiert
- Asteroiden-Daten und separater Build-Loop eingefügt
- Asteroiden-Feature vorbereitet
- Asteroiden-Feature vorbereitet
- Asteroiden-Feature vorbereitet
- Reale Orbitalparameter implementiert (Inklination, Aufsteigender Knoten)
- Orbit-Alignment-Fix (orbitTilt in makeOrbitLine übergeben)
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix (orbitTilt in makeOrbitLine übergeben)
- Orbit-Helligkeit (Mondorbit voll, Planetenorbit halb)
- UI-Layout (zweispaltig, keine Umbrüche)
- Zoom-Problem (FOCUS_BASE_DIST = 120)
- Auto-Zoom Toggle hinzugefügt
- Zoom-Problem analysiert (maximale Zoom-Distanz)
- Fokus-Highlight für Orbit-Linien
- Fokus-Highlight für Orbit-Linien vorbereitet
- Fokus-Highlight für Orbit-Linien vorbereitet
- Orbit-Linien dunkler gestaltet
- Kamera-Modi komplett neu gebaut (free, lerping, focus)
- postFocusLookAt-Logik implementiert
- postFocusLookAt-Logik vorbereitet
- postFocusLookAt-Logik vorbereitet
- postFocusLookAt-Logik vorbereitet
- syncOrbitFromCamera-Fix (kein Sprung zur Sonne)
- syncOrbitFromCamera-Fix vorbereitet
- syncOrbitFromCamera-Fix vorbereitet
- Klick-Fokus: Monde anklickbar, Label-Überlappung behoben
- Klick-Fokus: BASE_SPEED von 0.5 auf 0.25 reduziert
- Klick-Fokus: Kamera zoomt sanft auf Objekt
- Zoom-Steuerung (+/- Buttons) hinzugefügt
- Mond-Geschwindigkeitsregler hinzugefügt
- Monde hinzugefügt (Erde, Mars, Jupiter, Saturn, Uranus, Neptun)
- Planetenbeleuchtung (Nachtseiten sichtbar)
- Sonne (fester Radius 28), Labels (fester Offset), Geschwindigkeitsregler
- Sonne sichtbar (MeshBasicMaterial), Labels (HTML-div), Hintergrund (schwarz), Planetengrößen halbiert
- Basisdarstellung Sonnensystem (Sonne, 8 Planeten, Orbits, Pause-Button)