=== Global Weather Pro: Weather Widget for WordPress ===
Contributors: alfloyd
Donate link: https://globalweatherpro.com/
Tags: weather-widget, ai, weather-alerts, geolocation, weather-forecast
Requires at least: 6.6
Tested up to: 7.1
Stable Tag: 2.7.13
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Global Weather Pro delivers reliable weather forecasts, severe weather alerts, and AI-generated animations through two distinct weather widgets.

== Description ==

**Global Weather Pro provides accurate weather forecasts and critical weather alerts for locations around the world. To offer maximum flexibility, Global Weather Pro includes two distinct widgets optimized for different placements: a comprehensive header widget and a compact sidebar widget. Effortlessly display current conditions, detailed 7-day forecasts, air quality, and severe weather alerts to keep your visitors informed and engaged. Perfect for any website, Global Weather Pro offers precision and flexibility to ensure an enhanced user experience, now featuring stunning, AI-generated animated images for all 60+ WeatherAPI's weather conditions in the widget's header. Make the widgets your own with 18 professional typefaces — and self-host every one of them with a single click for a fully Google-free, privacy-friendly setup. All weather data and alerts are sourced from WeatherAPI, a well-known and trusted weather provider, ensuring reliable and professional-grade forecasts you can count on. Global Weather Pro handles all API communications through our dedicated service, meaning you get reliable data from top providers like WeatherAPI without needing to sign up for, manage, or pay for your own API keys. 

Check out the live demos to see both widgets in action: [Sidebar Demo](https://globalweatherpro.com/sidebar-demo/) 
[Header Demo](https://globalweatherpro.com/header-demo/)

**Features:** 

- **Critical Weather Alerts:** Keep your audience safe and informed with timely notifications for severe weather events, sourced directly from WeatherAPI. Alerts are prominently displayed within the widget to ensure maximum visibility.
- **No API Keys Needed:** Instantly set up and deliver weather forecasts without any third-party signups or costs. Global Weather Pro handles all API communications through our dedicated service.
- **Responsive on Every Screen:** Both widgets adapt to the space they are given. On phones the header widget reflows into a single-column card that opens collapsed, so the current conditions are visible immediately and the full parameter readout and forecast strips are one tap away.
- **Dual Widget Design:** Comes with two specialized widgets—one designed for prominent header placement and another optimized for sidebars, ensuring a perfect fit for your theme's layout.
- **Professional Dark & Light Themes:** Choose between a rich, innovative Dark Mode featuring a slate-based palette with frosted glass effects and cyan accents, or a clean, polished Light Mode—both designed for a modern weather app aesthetic.
- **AI-Generated Animations:** Stunning AI-generated animated images for all 60+ weather conditions are displayed in the header of the weather widget, creating a beautiful user experience.
- **Accessibility Compliant (WCAG):** Built with comprehensive ARIA attributes, semantic HTML, keyboard navigation support, and reduced motion preferences for an inclusive experience for all users.
- **Detailed Hourly & Daily Forecasts:** Provide a true, 24-hour, hour-by-hour forecast and a 7-day forecast. Display key metrics like temperature, chance of rain, humidity, UV index, air quality, and more.
- **Shortcode Support:** Includes separate, reliable shortcodes for both the header and sidebar widgets ([gwpro_header_weather] and [gwpro_sidebar_weather]) for easy embedding anywhere on your site.
- **Flexible Placement (Widgets & Shortcodes):** Seamlessly add widgets to your header, footer, or sidebar. You can also use the simple shortcodes ([gwpro_header_weather] and [gwpro_sidebar_weather]) to embed forecasts anywhere on your posts or pages.
- **Font Customization:** Personalize the widget's appearance by choosing from 18 professional Google Fonts organized into Sans-Serif, Serif, Monospace, and Display categories, including Roboto, Open Sans, Inter, Montserrat, EB Garamond, Merriweather, Playfair Display, Roboto Mono, Poppins, and more. The widget layout stays pixel-consistent no matter which font you choose.
- **Privacy-First Font Self-Hosting:** Prefer not to link your site to Google's Font API? One click on the settings page downloads all 18 font families directly to your own server (each with its license file included), so visitor browsers never contact Google Fonts. Any font not yet downloaded automatically falls back to Google's CDN, so nothing ever breaks.

Whether you run a blog, business website, or community portal, Global Weather Pro makes it easy to share up-to-date weather insights with your audience.

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/global-weather-pro` or install through the WordPress plugin screen.
2. Activate the plugin through the 'Plugins' menu.
3. Navigate to "Appearance" > "Widgets" and add either the "Global Weather Pro Header" or "Global Weather Pro Sidebar" widget to your desired location.
4. Alternatively, embed the widgets directly into posts and pages using a shortcode: Use [gwpro_header_weather] to display the header widget. Use [gwpro_sidebar_weather] to display the sidebar widget.

== Frequently Asked Questions ==

= How do I display the widget? =
To display the Global Weather Pro widget, you have a few options:
Widget Menu: Navigate to "Appearance" > "Widgets" in your WordPress admin panel. From there, you can add either the "Global Weather Pro Header" or "Global Weather Pro Sidebar" widget to your desired location, such as your header, footer, or sidebar. 
Shortcodes: For more flexibility, you can embed the widgets directly into your posts and pages using shortcodes. 
Use [gwpro_header_weather] to display the header widget. 
Use [gwpro_sidebar_weather] to display the sidebar widget. 
It is important to note that the original shortcode, [gwpro_global_weather_pro], now functions as an alias for the sidebar widget shortcode ([gwpro_sidebar_weather]) for backward compatibility. Therefore, any existing instances of the old shortcode will continue to work without issue. 

= Does Global Weather Pro use AI? =
Yes. Global Weather Pro uses artificial intelligence for its visual layer. Every one of the 60+ weather conditions reported by WeatherAPI (condition codes 1000–1282) has its own AI-generated animated image, displayed in the header of the weather widget so the animation always matches the reported condition, including day and night variants for clear skies.

To be clear about what the AI does and does not do: the artificial intelligence is used to create the weather animations only. The forecasts, air quality readings, and severe weather alerts themselves are not AI-generated or AI-predicted, they come directly from WeatherAPI, a professional meteorological data provider. Your visitors see AI-created artwork paired with real, trusted weather data.

= Are the AI-generated weather animations self-hosted? =
Yes. All AI-generated animation files are bundled with the plugin and served from your own site, so displaying them requires no third-party image service, no AI API key, and no per-request AI costs. Nothing is generated on the fly at page load, the artificial intelligence work was done in advance, so the animations add no latency.

= What happens during severe weather? =
Severe weather alerts are sourced from WeatherAPI and displayed prominently inside the widget so visitors see them immediately. Alerts appear alongside current conditions in both the header and sidebar weather widgets, and no configuration is required, alerts for the widget's location surface automatically whenever the provider issues them.

= Is the plugin compatible with all WordPress themes? =
Global Weather Pro is designed to work with most WordPress themes. If you experience any issues, please create a topic on our official WordPress support forum so our team and the community can assist you: [Official Plugin Support Page](https://wordpress.org/support/plugin/global-weather-pro/) 

== Screenshots ==

1. Desktop view of the header widget set to dark mode theme.
2. Mobile view of sidebar widget set to dark mode theme.
3. Mobile view embedded using shortcode set to light mode theme.
4. The admin settings page for entering a custom location.
5. Shortcode section of the settings page with one-click copy buttons.

== Changelog ==

For the complete version history (all releases), see the readme.txt revision log: [https://plugins.trac.wordpress.org/log/global-weather-pro/trunk/readme.txt](https://plugins.trac.wordpress.org/log/global-weather-pro/trunk/readme.txt)

= 8.9.8 - (2026-09-10) =
* **Release:** Updated the stable tag from 'trunk' to '8.9.8'.

= 2.7.11 - 2026-09-10 =
* **Fix: Header Widget Rendered Wider Than the Space It Was Given.** The card was set to the full width of its container and then given a margin on all four sides. A margin sits outside the measured box rather than within it, so the card was always about thirty-two pixels wider than the area it had to fit into, and the surplus was either clipped at the right edge or pushed out as a horizontal scrollbar on the page. The card also carried a minimum width equal to its container, which meant it could not give ground inside a narrow column, a flexible layout, or a page builder that expected its contents to adapt. Horizontal margin has been removed and the minimum width lifted, so the widget now fills exactly the width it is allotted and shrinks with it. Vertical spacing above and below the card is unchanged.
* **Fix: The Hourly and 7-Day Control Did Not Look Like a Control.** The two halves of the forecast switch were never shown together: whichever view was on screen had its own button hidden, leaving a single button carrying the name of the view the visitor was not currently looking at. Read cold by someone arriving at the page, a lone button reading "Hourly" above a seven-day forecast is far more easily taken for a caption describing the panel than for an invitation to change it, and there was nothing else to suggest otherwise. Both halves are now always on screen as a pair, with the active view filled in the widget's accent color and the alternative left plain, so the control reads as a choice between two options and shows at a glance which one is in effect.
* **Fix: Temperature Unit Buttons Were Not Recognizable as Buttons.** The Fahrenheit and Celsius controls were distinguished from one another only by a small difference in text color, applied from a script after the widget had already been drawn. They also declared no background or border of their own, so browsers fell back to the default grey system button styling, which matched neither theme and read as leftover page furniture rather than as part of the widget. The pair is now styled as a single segmented control with the selected unit filled in the accent color, and the selected state is set as the widget is built instead of on first interaction.
* **Fix: The Severe Weather Alert Icon Was Covered by the Forecast Buttons.** At tablet and desktop widths the alert icon and the forecast toggle were both pinned to the bottom-right corner of the card at fixed offsets that placed them in overlapping positions, and because the toggle is drawn later it sat on top. On a widget showing an active severe weather alert, the one element most worth seeing could therefore be obscured by a view switch. Both elements now sit in the card's normal flow, where the layout keeps them apart on its own rather than relying on measurements that only held at one particular card height. The equivalent correction was made for phone widths in 2.7.6; this extends it to every screen size.
* **Fix: Forecast Controls Announced the Wrong State to Screen Readers.** The forecast toggle's accessible descriptions were reversed, so the button that showed the seven-day forecast announced itself as switching to the hourly view and the hourly button announced the opposite. Its pressed state was likewise set the wrong way round when the widget was built and was never updated afterwards, so assistive technology was told the same view was selected no matter which the visitor had chosen. Both the descriptions and the pressed state are now correct at every step and are kept in step with what is on screen, and the same state now drives the visible highlighting as well, so the two cannot fall out of agreement again.

= 2.7.9 - 2026-08-26 =
* **Fix: Sidebar Measurement Labels Were Too Cramped to Fit.** The six measurements below the current conditions were laid out as a wrapping row in which each item was allotted a minimum of eighty pixels. That is roughly the width of the word "Precipitation" on its own, so the longest labels had no room left over and pushed past the edge of their column, and because items in that kind of row cannot shrink below the width of their own text, the result got worse rather than better as the sidebar narrowed. The measurements are now arranged in a two-column grid in which each cell is given half the width of the widget and is allowed to shrink, so every label fits whole with space to spare. The trailing colons have been dropped as part of the change: in a grid the column alignment already separates the label from its reading, and a colon left over from the old inline layout only added width without adding meaning.
* **Fix: Severe Weather Alert Text Was Centred in the Sidebar.** The sidebar widget centres its own contents, and the alert modal is built inside that container, so the alert wording inherited the centring from its surroundings. The alert stylesheet had never set an alignment of its own to stop it, which left multi-sentence warnings reading as a stack of centred fragments rather than as prose. Alert text is now aligned to the start of the line, which is the left edge on a left-to-right site and the right edge on a right-to-left one.

= 2.7.8 - 2026-08-26 =
* **Fix: Air Quality Labels Were Cut Off in the Forecast Strip.** The AQI badge in the header widget's hourly and 7-day strips inherited the widget's full text size, but the forecast columns are a fixed width. Longer tier names therefore ran past the edge of their column and were trimmed with an ellipsis after roughly seven characters, so "Unhealthy" and "Hazardous" arrived as fragments and the color was doing all the work. The badge now renders at a smaller size scaled to the column, with padding that scales with it, so every tier name fits whole at desktop and phone widths and in all 18 available fonts, including the wider monospace and display faces. The "--" shown where no reading is available was given the same treatment, so it no longer sits noticeably larger than the badges around it.
* **Change: "Very Unhealthy" Is Now Labeled "Severe".** EPA tier 5 was the one label too long to fit a forecast column at a readable size; shrinking the text far enough to accommodate it would have made every badge, including the short ones, harder to read. It is now shortened on the badge itself, following the same approach already used for tier 3 ("Unhealthy for Sensitive Groups" appears as "Sensitive"). The full description remains in the badge's hover tooltip and is still announced in full to screen readers, so no information is lost.

For older releases, see [changelog.txt](https://plugins.svn.wordpress.org/global-weather-pro/trunk/changelog.txt).

== Third-Party Services ==

**Global Weather Pro API**

- Fetches weather data.

- No personal data collected.

- Accessed at: 

  - [https://www.pointforecaster.com/api/geocodedata](https://www.pointforecaster.com/api/geocodedata)
  - [https://www.pointforecaster.com/api/alerts](https://www.pointforecaster.com/api/alerts)
  - [https://www.pointforecaster.com/api/forecasthourly](https://www.pointforecaster.com/api/forecasthourly)
  - [https://www.pointforecaster.com/api/forecastdaily](https://www.pointforecaster.com/api/forecastdaily)

- Privacy Policy: [https://globalweatherpro.com/gwpro-privacy-policy](https://globalweatherpro.com/gwpro-privacy-policy)

**WeatherAPI**

- Provides weather forecasts and alerts.
- Location data (entered by site owner) sent; no personal data collected.
- Accessed at: 
  - [https://api.weatherapi.com/v1/alerts.json](https://api.weatherapi.com/v1/alerts.json)
  - [https://api.weatherapi.com/v1/forecast.json](https://api.weatherapi.com/v1/forecast.json)
- Weather condition icons served from: [https://cdn.weatherapi.com/weather/](https://cdn.weatherapi.com/weather/)
- Privacy Policy: [https://www.weatherapi.com/privacy.aspx](https://www.weatherapi.com/privacy.aspx)

**Geoapify API**

- Provides geolocation services.
- No personal data collected.
- Accessed at: [https://api.geoapify.com/v1/geocode/search](https://api.geoapify.com/v1/geocode/search)
- Privacy Policy: [https://www.geoapify.com/privacy-policy/](https://www.geoapify.com/privacy-policy/)

**Google Fonts API**
- This service is used to load and display the custom font selected in the widget settings, but only for fonts that have not yet been self-hosted. Once a font is downloaded via Settings > "Download & Self-Host All Fonts," it is served entirely from your own server and visitor browsers never contact Google.
- **Personal Data**: When a font loads from Google's CDN, Google may collect data such as visitor IP addresses in order to serve the font files. Self-hosted fonts send no visitor data to Google.
- **Access**: Visitor browsers access https://fonts.googleapis.com (stylesheet) and https://fonts.gstatic.com (font files) only while a selected font is not self-hosted. When the site owner runs the one-click download tool, these same two endpoints are contacted once, server-side by your WordPress site, never by your visitors, to fetch the font files.
- **Privacy Policy**: Refer to Google's privacy policy here: https://policies.google.com/privacy.

== Third-Party Fonts & Licenses ==

This plugin offers 18 Google Fonts as font-family options. When downloaded via Settings > "Download & Self-Host All Fonts," the actual font files are saved to this plugin's own /fonts/ directory (one subfolder per font, each including a LICENSE.txt). Both licenses below permit free use, modification, and self-hosted redistribution:

* **Apache License, Version 2.0** (Roboto, Roboto Mono) — http://www.apache.org/licenses/LICENSE-2.0
* **SIL Open Font License, Version 1.1** (Open Sans, Inter, Lato, Source Sans Pro, Raleway, Montserrat, Nunito, EB Garamond, Merriweather, Playfair Display, Lora, Crimson Text, Source Code Pro, Fira Code, Poppins, Quicksand) — https://scripts.sil.org/OFL

Until a given font is self-hosted, it is instead loaded live from Google Fonts under the same license terms; see "Google Fonts API" under Third-Party Services above for that data flow.
