Skip to content

Releases: whyisthisbroken/atmo-weather-card

v7.5.0 - Final Chapter

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 18 Aug 18:51

v7.5.0

Breaking Changes

  • card_style default changed from "immersive" to "standalone". Cards that don't explicitly set card_style will now render in standalone mode instead of immersive mode. If you relied on the previous default, add card_style: immersive to your card configuration.
  • card_filter replaced by card_filter_clouds and card_filter_sun. Existing configs are automatically migrated — your previous card_filter value is copied to both new keys on first load. No manual action required, but you can now configure cloud and sun filters independently.
  • celestial_moon_style removed. The moon now always follows the theme-appropriate default color. Existing configs with this key will have it silently dropped during migration.

New Features

  • Independent cloud/sun filters — card_filter_clouds and card_filter_sun let you apply different visual filters (darken, vivid, muted, warm) to clouds and the sun/moon glow separately.
  • Sun-angle-coupled cloud lighting (cloud_sun_angle_lighting, auto-enabled on perf_effects >= 2) — cloud highlights now shift to visually track the sun's actual position instead of a fixed direction.
  • Breathing cloud shapes (cloud_breathing_shapes, auto-enabled on perf_effects >= 2) — visible clouds subtly reshape every 8-15 seconds for a more organic, alive look.
  • Comet/shooting-star weather gate — comets and new shooting stars no longer spawn during fully overcast conditions (cloudy, rainy, pouring, lightning-rainy, snowy-rainy), fixing comets appearing under a solid cloud layer.

Visual Improvements

  • Cloud edges now use noise-based deformation instead of perfect circles for a more natural silhouette (perf_effects >= 1).
  • Cloud micro-drift now uses noise instead of sine waves, removing the mechanical, repetitive feel of cloud movement.
  • Distant and near cloud layers now move at more clearly differentiated speeds for a stronger parallax effect.
  • Hero star diffraction spikes (the 1-2 brightest stars per session) shortened by approximately 35-40% on the ultra performance tier - less visually overwhelming while still standing out.
  • Compact cards (height below approximately 210px) now render clouds at a readable minimum size instead of shrinking indefinitely.

Editor Improvements

  • Filter changes (card_filter_clouds, card_filter_sun) now apply immediately in the editor preview instead of waiting for the next weather change or resize.
  • Renamed the "Weather Effects" setting to "Effect Quality" to better reflect that it controls rendering fidelity (noise detail, aurora, comet/shooting-star probability, sun-angle coupling), not a toggle for visible weather effects.
  • Replaced the single "Filter" dropdown with separate "Cloud Filter" and "Sun Filter" dropdowns.
  • Removed the "Moon Style" dropdown (superseded by automatic theme-based coloring).
  • Full English-language audit of all editor labels.

Performance and Stability

  • Cloud re-baking is now rate-limited to at most once every 2 seconds, with delayed requests guaranteed to run afterward instead of being dropped, preventing redundant re-renders when multiple triggers (filter changes, sun-angle shifts, breathing timer) fire close together.

Bug Fixes

  • Fixed a critical bug where all weather animations (clouds, rain, fog) would silently stop rendering at night due to an undefined variable reference in the shooting star logic.
  • Fixed the breathing cloud shapes timer incorrectly reshaping off-screen clouds.
  • Fixed an inconsistency where cards without an explicit card_style could end up in an incorrect internal state after the standalone-default change.
  • Fixed a stray character rendering in the card editor between the "Sun & Moon" and "Color Mode" sections.
  • Fixed an incorrect color value in the dark-night cloud palette.

v7.2.3

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 15 Aug 10:49

Cloud Motion Tuning

  • Reduced the vertical cloud drift-wave frequency from 1.25 to 1.0.
  • Halved the vertical movement amplitude from (2 + layer × 2.5) to (1 + layer × 1.25).
  • Clouds now rise and fall more slowly and with a subtler range, producing calmer and more natural-looking motion.

No other behavior changes since the previous v7.2.3 build.

v7.2.2

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 15 Aug 10:26

Visual Tuning

  • Increased the cloud count for the cloudy weather preset (cloud: 24 → 32) — 24 felt sparse for an overcast sky.

Cloud Behavior (rolled up from the v7.2.2 iteration)

  • Fixed a bug where wind could momentarily go negative at calm wind strengths, causing every cloud to reverse direction together (looked like a curtain swaying). Gusts can now only slow the wind down, never reverse it.
  • Replaced the hard teleport wrap-around with a smooth fade-out/fade-in cycle per cloud, over ~8 seconds, instead of an abrupt jump.
  • Added a single speed knob (CLOUD_SPEED_SCALE, currently 0.5) for overall cloud drift pace.
  • Hardened the render loop so a single rendering exception can no longer permanently freeze all animation.

No other behavior changes since v7.2.1.

v7.2.1

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 15 Aug 09:39

Cloud Drift: Width-Relative Speed Model

  • Live diagnostics on a real card confirmed a measured (non-aliased) cloud speed of ~23 px/s, which is reasonable in absolute terms but felt like racing on narrower cards, since the previous model used a fixed pixels-per-second constant regardless of card size.
  • Replaced the fixed px/second constant with a crossing-time model: a reference main cloud (layer 1, default wind) now takes a fixed ~40 seconds to cross the card, whatever its width is. This keeps the pacing feeling consistent whether the card is a narrow sidebar tile or a full-width dashboard card.

Also in this release (rolled up from recent iterations)

  • Fixed a real bug where foreground "scud" clouds were getting layer-based speed scaling applied twice, reaching ~6.4x the intended speed; relative cloud speed is now clamped to 0.3x-2.5x.
  • animation_speed (global) default: 1.0. bird_animation_speed default: 0.3. star_animation_speed default: 0.5.
  • Removed the short-lived cloud_drift_speed option entirely (no config key, no editor slider) to avoid stacking multiple speed multipliers; cloud pacing is now tuned through a single internal constant.

No other behavior changes since v7.2.0.

v7.2.0

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 15 Aug 09:07

Critical Fix

  • Animation loop could freeze entirely during cloudy weather: _drawCelestialGlow() referenced an undefined variable in its diffuse glow branch (sun-behind-clouds, active during cloudy conditions), throwing a ReferenceError on every frame. This aborted the render loop mid-frame, which stopped birds/planes from ever spawning and froze the entire animation (clouds, everything) after the first affected frame. This explains reports of clouds barely moving and birds/planes never appearing.

Bug Fixes

  • Cloud rendering glitch (rectangular clipping artifact): Fixed a bug in the cloud atlas baking logic where the bounding-box calculation for each cloud "puff" ignored rotation, causing puffs to occasionally be hard-cropped or bleed into neighboring atlas cells. The bounding box now correctly accounts for rotated ellipses.
  • Same clipping bug in sun/moon decoration clouds: Applied the same rotated-ellipse bounding-box fix to celestial (sun/moon) cloud baking, which used its own canvas per cloud and was affected identically.
  • Clouds barely moving: Cloud drift was dominated by a wobble effect that was much larger than the actual wind-driven movement, making clouds appear nearly stationary. Rebalanced so wind-driven drift now dominates, with a subtle wobble on top, and further increased the drift scale after confirming the render-loop freeze above was masking the true speed.
  • Unrealistic drift speed at extremes: Added an upper bound on wind-driven cloud drift so combining high storm wind with a high animation_speed no longer flings clouds across the screen unrealistically fast.
  • Wind direction could reverse: Wind gusts could previously push the effective wind briefly negative at low base wind values, making clouds drift backwards for a moment. Wind can now only slow down, never reverse direction.
  • Potential crash in plane rendering: Added a null-guard for _cachedDimensions in the fauna (birds/planes) renderer.

Code Quality / Maintainability

  • Extracted a shared circularIndex() helper and color lookup tables in the fauna (birds/planes) renderer, replacing duplicated inline logic.
  • Extracted shared renameKey() / toIntOrZero() helpers in the config migration logic, removing duplicated rename closures.
  • Editor: added _ds(), _badIdx(), and _getCustomCards() helpers to remove ~30 repeated boilerplate blocks across event handlers.
  • Editor: unified the two nearly-identical slider renderers into a single shared template.
  • Editor: shared the X/Y offset-picker markup between the celestial and image offset pickers.
  • Editor: simplified position-grid rendering to use the precomputed lookup tables directly, removing dead fallback code.
  • Editor: centralized repeated data-mode string literals into named constants (TOGGLE_MODE, SEGMENT_MODE) to avoid silent typos between templates and handler logic.

Documentation

  • Updated HACS installation steps in the README to match the current HACS UI.

v7.1.0

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 14 Aug 16:57

Release Highlights

This release consolidates the improvements introduced from v7.0.0 through v7.0.4.

Fauna and Animation Improvements

  • Enhanced bird randomization with individual flap phases and speed variation.
  • Improved bird realism with visible heads, tails, depth scaling, and more natural formations.
  • Added synchronized V-formations and diagonal formations, while chaotic formations retain natural speed variation.
  • Improved plane rendering with weather- and theme-adaptive visibility.
  • Added smoother age-based plane contrail fading and preserved the dual-trail motor layout.

Rendering and Performance

  • Fixed plane transform handling and improved canvas state isolation.
  • Reduced allocations in bird rendering and optimized line-width calculation.
  • Preserved efficient cached rendering for animated visual effects.
  • Added focused automated coverage for rain, snow, hail, fog, and lightning lifecycles.
  • Added Home Assistant state-handling coverage for missing, unavailable, and unknown entities.

Typography

  • Finalized Figtree as the card typeface.
  • Added a dedicated card font variable so Home Assistant theme defaults do not override the card typography.
  • Preserved asynchronous, browser-cached Google Fonts loading.
  • Applied a softer, modern typography treatment with lighter weights.

Cloud and Atmospheric Improvements

  • Added more natural layer-specific cloud drift and breathing.
  • Improved cloud depth, softness, and atmospheric haze.
  • Tuned stratus, scud, and cirrus behavior for a less geometric and more natural appearance.
  • Refined cloud proportions and overcast layering.

Sun Corona and Glow

  • Replaced the regular sun pulse with a soft, organic corona aura.
  • Kept the solar disc stable while the surrounding light moves subtly.
  • Added asymmetrical radial light tongues with varied lengths and widths.
  • Removed concentric halo rings that could make the sun look like a blinking light.
  • Rendered corona tongues directly on the main canvas to prevent rectangular texture edges.
  • Added soft blur so the corona remains atmospheric rather than graphic.
  • Made the aura responsive to conditions:
    • Clear weather keeps the corona more lively.
    • Mist and fog use a larger, softer, and more transparent glow.
    • Overcast conditions use a broader and more diffuse glow.
  • Tuned the aura by card mode:
    • Immersive mode is more restrained for text readability.
    • Standalone mode allows a slightly stronger atmospheric glow.
  • Increased corona drift and added subtle independent tongue movement so the effect is easier to notice without becoming distracting.

Validation

  • 17 tests passing.
  • Syntax checks passing for all active JavaScript files.
  • The corona was reviewed with an isolated animated preview.
  • No separate changelog file was added; release documentation is provided here.

v7.0.4

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 14 Aug 16:31

Highlights

  • Replaced the regular sun pulse with a soft, organic corona aura.
  • Kept the solar disc stable while the surrounding light moves subtly and slowly.
  • Added asymmetrical radial light tongues with varied lengths and widths.
  • Removed concentric halo rings and rendered the corona directly on the main canvas to prevent rectangular texture edges.
  • Added soft blur so the corona remains atmospheric rather than graphic.
  • Made the aura responsive to weather conditions:
    • Clear weather keeps the corona more lively.
    • Mist and fog use a larger, softer, and more transparent glow.
    • Overcast conditions use a broader and more diffuse glow.
  • Tuned the aura by card mode:
    • Immersive mode is more restrained to protect text readability.
    • Standalone mode allows a slightly stronger atmospheric glow.
  • Increased corona drift and added subtle independent tongue movement so the effect is easier to notice without becoming distracting.

Validation

  • 17 tests passing.
  • Syntax checks passing for the active JavaScript files.
  • Verified the corona movement in an isolated animated preview.

v7.0.3

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 14 Aug 15:28

Highlights

  • Refined cloud motion with more natural layer-specific drift and breathing.
  • Improved cloud depth, softness, and atmospheric haze, especially for stratus, scud, and cirrus layers.
  • Tuned stratus and scud shape proportions for a softer, less geometric overcast appearance.
  • Added focused animation coverage for rain, snow, hail, fog, and lightning particle lifecycles.
  • Added Home Assistant state-handling coverage for missing, unavailable, and unknown entities.

Validation

  • 17 tests passing.
  • Syntax checks passing for all active JavaScript files.
  • No changes were made to the legacy implementation.

v7.0.2

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 14 Aug 15:02

Release v7.0.2 - Figtree Option A

FIXES

  • Kept Figtree as the primary typeface for the weather card
  • Applied a soft, modern typography treatment with lighter weights and subtle negative tracking
  • Preserved the dedicated card font variable so Home Assistant defaults do not override the card text
  • Kept Google Fonts loading async and browser-cached

v7.0.1

Choose a tag to compare

@whyisthisbroken whyisthisbroken released this 14 Aug 14:29

Release v7.0.1 - Plane Visibility Enhancement

BUG FIXES

Plane Rendering Visibility:

  • Fixed plane visibility issue in light theme: planes were too dark and barely visible during clear weather
  • Implemented weather-adaptive plane coloring system for optimal visibility across all conditions

VISIBILITY IMPROVEMENTS

Dynamic Color System:

  • Clear weather in light mode: dark blue aircraft for realistic appearance and strong contrast against bright sky
  • Severe weather in light mode: muted blue-gray color for visibility against dark storm clouds
  • Clear weather in dark mode (night): standard light gray for visibility against night sky
  • Severe weather in dark mode: very light gray for maximum visibility against dark storm clouds

Technical Implementation:

  • Plane color now automatically adapts based on theme (light/dark) and weather conditions (clear/severe)
  • No performance impact: color selection happens once per render cycle
  • Maintains visual consistency with existing animation systems

Result:

  • Planes are now clearly visible in all lighting and weather scenarios
  • Improved user experience with weather-appropriate coloring