Skip to content

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 16 Sep 19:46
· 19 commits to main since this release

[1.0.3] - 2026-09-16

New Features & UI Enhancements

  • Recent Locations & Favorites: Added a recent locations history (max 3 slots) with duplicate prevention, and the ability to mark a city as a favorite (p key) to pin it with a [FAV] symbol.
  • Persistent Preferences: Automatically saves and restores your unit preference (°C/°F), favorite city, and search history to ~/.config/WeatherTUI/config.json via a new ConfigManager.
  • Smart Startup Loading: Automatically resolves and loads weather metrics for your favorite city upon launch, falling back to your most recent search.
  • Interactive Modal Keybindings: Added a comprehensive keybindings legend overlay toggled via ? (dismissible via ?, Esc, or q), styled using Lip Gloss placement primitives.
  • Enhanced Navigation & Panel Switching:
    • Implemented panel switching via Tab with active border styling.
    • Added Vim-style (j/k) row navigation for the 14-day forecast table and recent locations list.
    • Added manual refresh and cache bypass via the r key.
  • Atmospheric Telemetry & Dynamic Styling:
    • Added wind direction parsing with degree-to-compass conversion using ASCII arrows ($\uparrow, \nearrow, \rightarrow, \searrow, \downarrow, \swarrow, \leftarrow, \nwarrow$).
    • Implemented color-coded threat thresholds for UV index, relative humidity, and wind speed indicators.
    • Added dynamic temperature styling (<0°C blue, 0–15°C cyan, 15–25°C green, 25–30°C orange, >=30°C red) applied to current metrics and the forecast table.
  • Responsive Design Guards: Added an early guard condition to render a fallback message ("Terminal screen too small. Please resize.") if the terminal dimensions drop below 80x20.

Bug Fixes & Improvements

  • Geocoding & Caching: Persisted the resolved geocoded city name (City, Country) inside the cached WeatherResponse object so subsequent cache hits return the formatted name instead of raw user input. Clean search terms are saved to history rather than the formatted API name to prevent re-fetching failures.
  • Refined Esc Handling: Updated Esc behavior in main.go to blur the text input and switch focus back to the forecast panel when inside the search panel, preserving application exit functionality when the search panel is inactive.
  • UI Status Bar: Displayed the explicit Ctrl+C exit shortcut alongside the Esc unfocus hint in the search panel status bar.

Project Structure & Refactoring

  • Modular Architecture: Extracted Lipgloss model, view, and update UI logic from main.go into the internal/ui/ package.
  • Style Isolation: Moved Lipgloss style and color definitions to internal/ui/styles.go.
  • Helper Utilities: Extracted temperature unit conversion, directional degree calculation, and dynamic threshold style resolvers into internal/ui/helpers.go.

Commits

  • a3412a7 Merge branch 'refactor'
  • db56224 docs(readme): align document
  • 9c14daf docs(readme): align document
  • 0d13d5e docs(readme): align document
  • 091ba67 feat(config): add favorite location and JSON config persistence
  • b771be9 feat(tui): add contextual help overlay modal with '?' toggle
  • db78bd6 feat(tui): add panel navigation, unit toggle and cache refresh
  • c047732 feat(tui): add recent locations panel with navigation and reload support
  • 731a373 feat(tui): add terminal dimension guards and max layout bounds
  • a930fef feat(tui): defocus search input on esc keypress
  • 75ff4b5 feat(ui): add dynamic color styling for humidity and wind metrics
  • 92b2797 feat(ui): add wind direction ASCII arrows and dynamic temperature styling
  • dd65395 feat(ui): extend atmosphere monitor with wind direction and uv index indicators
  • 396c3cf fix(cache): preserve formatted city name in weather response on cache hit
  • 0eb71b9 refactor(api): Moved 'weather' and renamed it to the standard name
  • 290752a refactor(ci): restrict release targets to linux only
  • 8105f4e refactor(config): Moved 'config'
  • ee21bfd refactor(config): move config file location to ~/.local/share/WeatherTUI
  • f688316 refactor(main): Removed duplicate functions from the main
  • fb3207f refactor(ui): extract UI helper functions and styles to internal/ui package
  • c03bebc refactor(ui): extract model logic to internal/ui package
  • 4490b0f refactor(ui): extract update logic to internal/ui package
  • 65e3d22 refactor(ui): extract view logic to internal/ui package
  • 3326609 refactor(ui): move [CACHE HIT] badge into monitor panel header