Repository navigation
Releases: whyisthisbroken/atmo-weather-card
Releases · whyisthisbroken/atmo-weather-card
Release list
v7.5.0 - Final Chapter
v7.5.0
Breaking Changes
card_styledefault changed from"immersive"to"standalone". Cards that don't explicitly setcard_stylewill now render in standalone mode instead of immersive mode. If you relied on the previous default, addcard_style: immersiveto your card configuration.card_filterreplaced bycard_filter_cloudsandcard_filter_sun. Existing configs are automatically migrated — your previouscard_filtervalue 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_styleremoved. 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_cloudsandcard_filter_sunlet 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 onperf_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 onperf_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
ultraperformance 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_stylecould 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
Cloud Motion Tuning
- Reduced the vertical cloud drift-wave frequency from
1.25to1.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
Visual Tuning
- Increased the cloud count for the
cloudyweather 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, currently0.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
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_speeddefault:0.3.star_animation_speeddefault:0.5.- Removed the short-lived
cloud_drift_speedoption 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
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 aReferenceErroron 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_speedno 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
_cachedDimensionsin 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-modestring 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
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
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
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
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
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