Skip to content

v1.0.5

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Sep 10:51
· 7 commits to main since this release

[1.0.5] - 2026-09-27

New Features

  • Apparent Temperature Engine (CalculateApparentTemperature)

    • Computes "feels like" temperatures (°C/°F) using real-time temperature, relative humidity, and wind speed metrics.
    • Incorporates Wind Chill dynamics for temperatures $\le 10^\circ\text{C}$ with wind speeds $> 4.8\text{ km/h}$.
    • Applies Rothfusz Heat Index approximations for warm and humid conditions ($\ge 27^\circ\text{C}$ with relative humidity $\ge 40%$).
    • Handles seamless fallbacks to real temperatures when atmospheric thresholds are not met.
  • Smart UI "Feels Like" Display

    • Evaluates variance using math.Abs(rawCelsius - rawApparentCelsius) >= 0.5.
    • Appends (feels X.X °C) / (feels X.X °F) only when the perceived temperature significantly diverges from the real temperature. Omits redundant indicators when identical.
  • Geographical Telemetry in Status Bar

    • Displays active latitude and longitude coordinates in the bottom status bar alongside terminal dimensions.
    • Dynamic styling: coordinates render in yellow for favorited locations and cyan for standard searches.
  • WMO ASCII Art Icons

    • Integrated World Meteorological Organization (WMO) codes into the Open-Meteo payload.
    • Renders dedicated ASCII condition art alongside weather condition labels in the main atmosphere monitor panel.
  • Adaptive Small Screen Layout (renderSmallScreenLayout)

    • Triggers a compact vertical layout when terminal dimensions collapse below 80x20.
    • Preserves screen real estate by rendering the search input, current weather monitor, and favorites/history panels while gracefully hiding the 14-day forecast table.
    • Progressively reveals extra telemetry metrics (UV index, AQI, moon phase, sunset/sunrise times, and ASCII icons) as vertical space allows.

Performance & Core Architecture

  • Cache Garbage Collection

    • Introduced a ticker-driven background goroutine in CacheService that periodically sweeps in-memory entries and evicts stales beyond the 30-minute TTL threshold to eliminate memory leaks.
  • Thread-Safe Deep Copies

    • Added deepCopyResponse helper to CacheService.Get and CacheService.Put to protect underlying slices against data races in concurrent contexts.
  • Decoupled Location Resolution

    • Split WeatherClient orchestration into discrete ResolveLocation and FetchForecastByLocation steps, enabling incremental TUI updates during async fetches.
  • Cache Service Accessor

    • Exposed a clean accessor on WeatherClient to grant callers controlled direct access to the internal cache service.

Commits

  • d7b2b39 docs(readme): align document
  • db7b242 docs(readme): fix document
  • b9dc8ed docs(readme): update API reference, cache documentation and key features
  • 5af51a2 docs(readme): update features, API documentation, and terminal dimension guard
  • 49322e7 feat(cache): add background garbage collector worker for expired entries
  • 38a9dce feat(ui): add ASCII weather condition icons driven by WMO codes
  • 1abdd65 feat(ui): add apparent temperature calculation to atmosphere monitor panel
  • 18a493e feat(ui): add responsive layout for small terminal screens
  • 3cea214 feat(ui): display coordinates in footer status bar with favorite highlight
  • 06cb7bb feat(ui): dynamic metric ordering in compact layout
  • 1c7bf1d refactor(weather): implement deep copy cache and decoupled geocoding pipeline
  • 818d5db style(ui): enhance partly cloudy ASCII icon rendering