- Removed 'Yahoo' as a weather source as they have discontinued their service as of 6/1/2021; setting will be adjusted to OpenWeatherMap if set.
- Added additional information to the automatic error reporting to make management of tickets easier.
- System will now 'cache' converting that zip code to lat/lon; meaning will no longer try to convert every time.
- Applied SSL/TLS 1.2 preference to new SSDD libraries.
- Enabled 'dark mode' for the title bar (note: assumes latest version of Windows 10).
- Fixed issue with outroautofit is enabled and there aren't actually any outro segements available.
- Fixed 'raw' not being active for Yahoo.
- Additional improvements to 'data collection'.
- Added settings to activate additional 'data collection' (debug-collect) and service testing feature (service-rotate) to the debug section.
- Added initial support for Thresholds.
- Modified CloudAudio so that a locally downloaded (temporary) file is deleted before attempting to redownload the file.
- Special case is given to NAudio.MmException for circumstances where a server version of Windows and the Desktop Experience is not available.
- Modified so weather information containing the "then" phrase will favor the second condition rather than the first.
- Fixed "partly sunny" and "mostly sunny" being incorrectly remapped to "sunny" for legacy voices.
- Adjusted legacy voices so that "sunny" is mapped to "clear"; this was a regression in the move to the new data retrieval - it used to already do this.
- Updated to that SSL TLS 1.2 is desired (mainly related to Windows 7 and recent changes to National Weather Service).
- Fixed issue with trying to drop extended night #1 causing the drop segments mechamism to get stuck in a infinite loop.
- Fixed issues around adding extended forecasts causing problems with dropping/calculating reduction in size to fit forced duration forecasts.
- Enhanced/improved the "gap" (silence) introduced when attempting to force a length so that the gap is spread more event across the available elements.
- Added "a few clouds" to handled day/night conditions.
- Improved Outro Auto-Fit so that it now more accurately calculates based on actual length (not filename) and can support more available lengths beyond just half-second as previously done.
- Modified Outro Auto-Fit so that the filenames and outro prefix are no longer case-sensitive.
- Modified loading of "remap" conditions so that any entries in the .ini file that are currently a -1 are correctly converted to the now current default values.
- Improved OpenWeatherMap mapping (translating) icon to sky condition code.
- NWS* further improved for all three types converting summary phrase to code.
- Corrected spelling of Wintry.
- Fixed issue with legacy voices not tranlating slight chance of showers to showers.
- Added day-of-week setting for Today and Tomorrow.
- Initial work for several new features: split temp/sky, extended forecast, service failover in config and ini.
- Modified so that the default for dark and light mode will be dark.
- Fixed BuildAlert so that it utilizes CloudAudio.
- Updated areas that were calculating the current voice so that are utilizing a common method.
- Added checks for BETA_RADIOWEATHER to support transitioning to RadioWeather.com.
- Code cleanup.
- Initial implementation of "service failover".
- Work in progress on adding additional forecast segments/elements to config.
- Segments/elements are renumbered properly (in config window).
- Refactored code for segments/elements (array) so that work can be done to allow wind AND precip at the same time. (Previously, the precip - if available - would replace wind.) Furthermore, modified so that wind and precip can be included at the same time.
- Fixed issue with wind for tomorrow being removed regardless of settings.
- Transitioned application to default back to "light mode".
- Added ability to specify font-multiplier in settings.ini.
- Added ability to specify dark-mode in settings.ini.
- Fixed precip tag showing even if the precip info was shown.
- Improvements related to "day/night" for when temps are below zero.
- Refactored "phrases" so that the same code is shared between multiple projects.
- Fixed filtering of alerts to take into account "watches" as related to legacy voices.
- Added a small artificial delay to the flush cache process as well as updating the displayed message so that the action (and process) can be visually seen.
- Added more sky conditions.
- Completed the work for the completely validating the new "current" as well as new "day/night" forecast to more than triple the supported variations in sky conditions.
- Added "Dark Mode" to the title bar.
- Added CTRL+ALT+SHIFT+F to flush the CloudAudio download cache.
- BETA_DAYNIGHT now active for voices equal/greter than 10.
- Added several BETA_XXX values to support disabling/enabling some beta features that aren't ready to be released.
- Fixed Wind Chill / Heat Index display from being visible when the value is blank.
- Added icon and image to shutdown prompt (window).
- Tons of changes to the UI to support future font scaling.
- The feedback windows are now themed in the same way as the rest of the application.
- Added "filter" to handle alerts that do not exist for several legacy voices; instead of (previously) reporting an error that the asset doesn't exist.
- The "old way" of retrieving weather from the various services has been completely removed.
- Moving from "numeric" segment identifiers to "named" identifier.
- The "textual" forecast now includes the complete forecast; not the individual selection "segment".
- Work in progress adding functionality for "day/night" forecast model (currently for Billy and Rebecca).
- Main screen now "grays out" during refresh.
- Opening the options window and immediately closing without making any changes has been further optimized so that no unnecessary internet communication occurs unless potentially related changes have been made.
- Modified the textual forecast so that numbers are no longer spelled out.
- Aded [WARN] and [OUTRO] tokens to the textual forecast.
- Fixed context of the wind in the textual forecast ("is" v "will be").
- Improved wind speed so that "light" is no longer identified as "NA".
- Fixed issue where, under some conditions, outro isn't included in the forecast when utilizing "forced duration".
- Many refactoring and improvements around the overall logic for generating the resulting audio forecast.
- Code cleanup.
- Slight changes to alerts in order to align all voices (and preparing for future enhancement).
- Modified Logging so that, in the event it can't write to the log file, it will report the exception to the cloud.
- Updated copyright on the Welcome window.
- Added initial pass at determining sky condition based on summary/phrase; currently will fall-back to the original method (image).
- Code cleanup.
- Modified "feels like" so that wind chill is handled "properly".
- Modified CloudAudio so that the temporary download file is cleaned up properly regardless of success/fail.
- Added additional error reporting around CloudAudio failures.
- Microsoft Windows Server 2008 R2 Standard (as well as other Windows Servers SKUs) now require "Desktop Experience" in order to have the necessary multimedia libraries accessible.
- Updated the About form - added image and updated some of the text.
- Code cleanup.
- Completed phrase processing (to voice files).
- Added additional voices (at this point, most of these are placeholders).
- Renamed (cleaned up) voices and sorted aphabetic in settings. The description now contains category of voice.
- CloudAudio modified so that all voice artifacts are pulled from "voices" (instead of "audio" - as it was previous to this change).
- Code cleanup.
- Added additional error handling around failed CloudAudio downloads (WebException).
- Changes to reduce exceptions.
- Updated icon to the new (official) version.
- Enhanced CloudAudio so that it now can pull from multiple sources; these sources are defined as part of the Simple API (thus can now be modified without publishing a new version). If, for whatever reason, the source list can't be retrieved from the Simple API; will default to a known good so that it can at least attempt to move forward.
- There appears to be circumstances where the "temp" history file(s) are somehow in use (someone previewing them?) causing an exception that utlimately prevents the output from from continuing to succeed (the process aborts when encountering this issue); modified so that if this is encountered, the issue is ignored (and will try again the next time through).
- Fixed typo on phrase "Heat Index".
- Added additional "protection" when attempting to store the weather warning data; it appears that someone deleted the entire data folder while the application was still running - generating thousands of exceptions (effectively generating a denial of service attack vector). Will now attempt to recreate the folder and, if successful, will write the file.
- Modified CloudAudio so that filenames are lower-cased (unix-friendly).
- Added alert number 21 to the list of alerts that Maria's voice does not support.
- Added additional error trapping around opening a phrase file for handling "unauthorizedaccess"; instead of top level error handling... added local error handling (logging) and returning a 0 length in order to allow further processing.
- Modified so that CloudAudio will now attempt twice to retrieve a phrase; however, instead of attempting to retrieve from the same location twice, will now fail-over to an alternate location.
- Added support for integrated audio beds.
- More progress in the sunsetting of the "old way" of retrieving weather information - activation is based on the location setting being set instead of a "license" flag.
- When running for the first time, the default poll will be set to 30 minutes (instead of 15).
- Initial out-of-the-box experience has been significantly improved (we will continue to evaluate further ways to streamline the initial startup).
- Modified so that support PP and FL are verified for existing voices and disabled if known support doesn't exist (no longer generating a trouble ticket).
- Now supports "feel's like" for heat index.
- Now supports (using the new weather services) precip.
- Fixed feel's like greater than 90 degrees not working properly due to formatting of an unneeded prefixed zero.
- Added support for the "William" voice.
- Initial pass at "out-of-the-box" welcome screen.
- Fixed typo where it is attempting to retreive the "today/tonight" portion and the low temperature was set to "today" instead of "tonight".
- Fixed issue with the status bar during splice forecast not being available (most likely due to software exit while updating).
- Added support for pressing CTRL+Backspace as a shortcut to launch the command prompt already in the UAW "data" folder to assist in diagnostics and support.
- Wired up support for "The Weather Company" (aka Weather Undground PWS specific API) - currently only handles the sensor specific information; forecast is pulled from nearest NOAA. In order to enable, need to add two values provided from their API to the INI file.
- Enhanced main screen to dsplay logo for The Weather Channel, OpenWeatherMap and WeatherStack with the same support that the NWS logo provided previously.
- Modified The Weather Company so that it shows TWC for the current and NWS for the forecast.
- Fixed display issue with F, mph, etc. not showing on the main display.
- Fixed the temperature and wind speed on the display so that it now only shows whole numbers.
- Added additional handling of UnauthorizedEccessException when attempting to write the forecast to the target location. Will now retry in the same manner as IOException (up to 45 seconds).
- Limit detail of error messages submitted to the server to a maximum of 5KB.
- Fixed an issue related to having to press F5 to force a refresh whenever you change the service (options). Will now automatically do a total refresh (same as F5) if this change is detected.
- Added support for "freeze" to WeatherWarn; requires that the audio asset exist in order to completely function.
- Modified NWS(DWML) so that, in the event of a redirect, will modify the exception reported so that it's clearly this situation so that we (maybe) can handle this better in the future.
- Extended the expiration preview version of the "Player" to 4/15/2021.
- Modified so that the SpliceForecast failures (most likely due to being actively played on the air) is only reported to the server if it happens at least 4 times in a row - mainly this is something that we need to be concerned with only if it is ongoing; the every once and a while occurance is somewhat expected - especially with some automation systems that "lock" the file well in advance of it actually airing.
- Modified so that WeatherWarn occurs at startup (before current/forecast) so that it can be available immediately with the next audio generation.
- Modified so that WeatherWarn is included in the refresh (F5).
- Fixed an issue where the WeatherWarn data could inadvertantly be overwritten causing the audio generation to incorrectly assume that there were no active alerts.
- Modified so that (if) the forecast isn't available, the audio generation is no longer attepted for the individual portions of the forecast that may be missing.
- Modified audio elements so that today sky condition of 0 is no longer forced to be "clear"; instead, it results in "None" causing the element to be (ultimately) skipped - unless, of course, "None" conditions are currently available.
- Modified how the "raw" text is stored when retrieving information from a weather source.
- Added additional error handling around receipt of weather conditions (beta).
- Added special handling for circumstances where check license is being redirected to a "page to found" placeholder by some outdated routers.
- Added CTRL+M to the internal "Recorder". If not in DIY mode, disabled recording and deleting of files. Also removed all filtering of conditions if not in DIY mode.
- Modified NWS (DWML) so that today, tonight, tomorrow and tomorrow night high temp is entered regardless of time of day (day vs night).
- Modified so that the NWS/Yahoo lat/lon are used for location in the beta version if the location is blank (eases in future transitioning).
- Fixed issue with the Wind condition not having a speed in DWML mode.
- Fixed issue with "feels like" failing under some conditions (found during beta testing of the new service engine).
- Updated .INI so that if the section is unknown, the name/value is ignored.
- Fixed issue with uaw.dat "file not found" with the changes made removing the legacy INI code.
- Removed the blinking asterisk from the version information on the main screen.
- Handled issue where wind speed is 'blank' causing the script on the main window to fail (generating an error).
- Added 'Player' project to the overall project.
- (DIY) Added 'WavePad' as an known external editor to the 'Recorder' ('Audition', 'WavePad', 'Audacity').
- Removed old 'ini' code; now uses a much more modern approach.
- Added (beta) access to the new weather service layer - the same one being tested / built in the 'GetWeather' utility; adds support for (currently) 6 different weather sources.
- Removed all (legacy) registry code - v4 dropped all functionality related to the registry; this code was still in place 'just in case'.
- Added additional details to the 'summary' portion of NWS 'NA' error reporting.
- (DIY) Updated 'Recorder' so that it has an additional range for the '11' condition.
- (DIY) Added CTRL+M in the 'Recorder' to filter (toggle) for 'missing'.
- Fixed the 'script' shown ont he main screen not working as desired with regards to forecasts where the temperature was between 0 and 10 degrees.
- (DIY) License now contains a DIY toggle; if DIY=True, must install the DIY installation, otherwise, must install the non-DIY edition.
- (DIY) The 'Recorder' will now attempt to launch Audacity (default installation) if Adobe Audition isn't found.
- (DIY) Modify the CTRL+E hot key so that the CTRL is no longer necessary (just E) in the 'Recorder'.
- (DIY) Added 'Snow Flurries' to the DIY list.
- Modified ReadTime so that it will try up to three times if the file is currently in use by another process (3 second delay between retries).
- (DIY) Modified the config window for the DIY edition so that several options aren't visible if the license hasn't been retrieved as yet.
- When the temperature is 'NA' (NWS), the reported exception (summary) will now indicate this.
- (DIY) Gracefully handling situation where no audio output device is available in the 'Recorder'.
- (DIY) Increased the pixel spacing for the lines in the 'Recorder' from 22 to 25.
- Modified so that CloudAudio is 'more agressive' (will try three different ways to download).
- (DIY) The 'Recorder' will now show a 'clean' error message when there isn't a microphone available (or other reason(s) why it can't start recording).
- (DIY) Added main menu entry to launch the 'Recorder'.
- Updated "cert".
- (DIY) Added TryCurrentAudio and TryForecastAudio to 'Recorder'.
- (DIY) Removed VolumeAdjustment, NWSPoll and YahooPoll from being available in the DIY edition.
- (DIY) Forced the voice selection to be 'DIY' in the DIY edition.
- (DIY) Removed View-Log in DIY.
- (DIY) Added CTRL+R to launch 'Recorder'.
- (DIY) Removed 'Tomorrow Night' details from the main window in DIY mode.
- (DIY) Forcing stop action whenever attempting to delete an audio file in the 'Recorder'.
- (DIY) Removed CloudAudio from Recorder window; now calls main CloudAudioAsync.
- Added 'protection' in WeatherWarn to prevent 'run-away' situation due to a corrupt weather info transfer.
- (DIY) Extended 'Recorder' to support down to 0 degrees for tonight and tomorrow night isolated thunderstorm condition (was 20).
- (DIY) Added support for launching Adobe Audition (default installation - if exists) from the 'Recorder'.
- (DIY) Added F1 to display the currently available 'Recorder' hotkeys.
- (DIY) Launched the DIY edition of UAW.
- Modified so that an error no longer occurs if the output file doesn't exists when it comes time to copy it to the final destination.
- Added 'Edition' capability to track and affect differences based on the installed edition.
- Fixed issue with the WindSpeed for tomorrow being blank causing an exception (NWS).
- Fix - incorrectly evaluating "alerts" as "alert" when attempting to download from the cloud.
- Fixed Wind issue when checking for the existence of the phrase containing "wind"; needed a 1 instead of a 0.
- Fixed issue with redirect; as it turns out, even after fixing the parsing issue, redirect doesn't actually work. Will need to do something else. (NWS)
- Removed unused / obsolete menu items in log viewer.
- Fixed issue with configured voice causing a crash if license is changed to no longer allow the currently selected configured voice.
- Added support for passing the configured email address to the exception reporting API so that the user id can be determined when reporting a ticket.
- GetCC error related to icon not being able to be determined from NWS.
- Enhanced the mechanism that retrieves licensing information; there is a parsing error that is happening... will now "attach" the information retrieved so that we can further diagnose when this circumstance occurs.
- Added additional handling around determing wind; in particular when there isn't any wind condition information.
- Modified how UAW handles "NA" information; was based off "condition", now is based on "temp".
- Fixed issue with exception being reported when Wx10 enabled.
- Modified config change ticket creation to show the difference (what it was versus what it changed to) instead of just attaching the new .ini.
- Removed the grouping line (not needed) from the Tools menu.
- Added feedback.
- Removed join.me.
- Removed Help/About.
- Added "attachment" of NWS to trouble ticket when the current condition is "blank" so we can investigate further.
- Added 503 handling to "browser"; will auto retryfor about 3 seconds before failing and reporting the exception as a trouble ticket.
- Added additional trajectory (shutdown, config changes).
- Added better handling for NWS "redirect"; it appears that NWS has some mechanism that will kick in whenever a weather station is unavailable and will attempt to redirect to a county. Will now attempt to descern the information from the county in order to be able to still have current information.
- Improved parsing of the windows for NWS.
Improved HTTP get to automatically retry (for up to 1 second) whenever a domain is unable to be determined (DNS hickup).
- Fixed "None remap so that it no longer affects forecasts (only affects the now portion of the broadcast).
- Greater than 2.0 seconds of silence is now treated as a warning.
- When reporting an exception to the cloud, will automatically retry up to 1 minute instead of prompting for a "retry/cancel" from the user - of which there most likely isn't one.
- Modified so that remapping of conditions is now optional - only visible to those that have the add-on enabled.
- Removed several message boxes related to errors when checking for license information; instead writes to the log as an error.
- In the event we are unable to parse the information from NWS, the associated data is now transmitted when reporting the error to the cloud.
- When encountering no or 'NA' condition from NWS, we now log this occurrence as an error.
Marked "Dolly Martin" as a legacy voice.
- Modified so that any voice can be utilized (at least from a testing point of view) for the 'None' remap feature.
- Improved: When an exception occurs due to failed retrieval of the information from the weather provider(s); several exceptions are generated down the chain. Optimized so that only the first exception is reported.
- Fixed: The Cancel button on the Join Me window doesn't do anything.
- Improved: Added automated error reporting for any exceptions so that we can be more proactive in responding to any issues as they arise.
- Improved: The previous update includes the ability to translate the conditions; however, this was done using numbers that required you to reference some sort of lookup list. This has been completely transformed so that it's "intuitive" (no longer numbers, the actual condition names).
- Fixed: If you were to clear the output path in config and then (without exiting the software first) left mouse clicked on the condition image to open the output path causing an exception and exit of the software. With this fix, it is no longer necessary to exist and restart the software to reset the output path to the "factory default"; it will now do so as soon as you close the config window. (As a side note, this is the first bug fixed thanks to the automated exception reporting mechanism.)
- Improved: Added support (including fulfilling usage/licensing requirements) for Yahoo as a weather data provider.
- Improved: Added NWS logo to the screen (when using NWS).
- Improved: It is now possible to click the conditions text to launch the web browser for the data providers source web page; please note that this isn't the actual data source, but rather the data providers publicly visible version of the data.
- Improved: Shift+Click on the NWS logo will launch the browser to the NWS "global map".
Improved: It is now possible to "translate" (remap) condition codes. The condition codes that are currently supported are:
01 - Wind and Rain
05 - Rain and Snow
06 - Sleet
07 - Wintery Mix
11 - Rain Showers
12 - Rain and Thunder
13 - Snow Flurries
14 - Snow Showers
15 - Snowy
17 - Thunderstorms
18 - Hail
19 - Dust
20 - Fog
21 - Haze
22 - Smoke
23 - Partly Cloudy and Windy
25 - Frigid
26 - Cloudy
27 - Mostly Cloudy
29 - Partly Cloudy
31 - Clear
32 - Sunny
33 - Fair
36 - Mostly Sunny
37 - Isolated Thunderstorms
38 - Scattered Thunderstorms
39 - Scattered Showers
41 - Scattered Snow Showers
- Improved: Added a new setting allowing to individually control how long to keep the temporary files. This value defines the number of hours to cache the temporary output and currently defaults to 24 hours. It is possible to set the value to 0 which effectively disables all historical caching (except, of course, the most recent).
- The version number (bottom right) should now show an asterisk about every second. Think of this the internal heartbeat. If we don't see this asterisk working, it will provide us some additional clues.
- The "temp" file is now modified so that it will store a different one for every forecast generation for the past 24 hours if including time announce and 7 days if not using time announce; this might need to be adjusted as we progress forward based on feedback / usage. Note that these files are automatically removed (cleared) in a first-in-first-out basis.
- The "alternate" update check setting has been removed as the "alternate" is now the norm.
- The way that the included segments are determined has been optimized.
- The mouse "flickering" about every second on the main screen has been resolved.
- Added some additional logging points in order to better diagnose potential issues.
- Completed the migration of the old licensing validation to the new and improved one.
- Modified update check URL to include date/time in order to prevent "caching" (proxy, etc.) from potentially blocking checking for a new version.
- Fixed crazy issue with the recent changes to the Yahoo service layer causing strange crashing issues to using ?.ToString on nullable numeric values in an attempt to convert them to a string. Changed to interpolated strings; resolved issue.
- Fixed issue related to the "repeat" setting becoming reset due to not being able to be included based on settings related to having to reduce the size of the audio file to fit the maximum length. This fix also "moves" (actually removes the duplicate) removal of the repeat until after the outro autofit, current wind/speed and/or chill factor has been processed.
- Modified audio warning size to be 20 seconds (was 10).
- Modified WeatherServices so that it can now support separate pulls of current conditions and/or forecast (for future purposes).
- Changed the MainTimer() logging so that each exception handler has a different eventId so that can better diagnose the error to the task within MainTimer().
- Improved NWS situation where NA is the current temp/condition; gracefully handling by no longer attempting to include the current temp/condition when it appears that a weather station is "offline". The screen also better reflects this situation by showing "NA" (what is actually retrieved) instead of defaulting to todays high/low.
- Added "PromptShutdown" option that can be optionally enabled to make it more difficult to exist the software; in other words, prevent accidental exit of the software.
- Fixed typo being displayed on the Tonight panel (was showing Tomorrow Night instead of Tonight as it should).
- For multiple station / multiple location clients, the list that provides the ability to switch between stations/locations now supports single click.
- Added more details to logging when audio file (RIFF) is invalid.
- Added a Log Reader.
- Removed truncation of names when writing to the log. Formatting the text file is no longer needed now that a log reader is available.
- A tremendous amount of restructuring and code cleanup in order to prepare for handling of multiple stations on a single computer (using the single application instance).
- Working through a file structure that will clearly separate the "cloud" audio from the "custom" audio; one benefit of this is ease of backup/restore. It will also make it more possible for diagnostics / monitoring here at the home office.
- Improved the Log to include the call letters, which weather service is being utilized, coordinates and other cosmetic improvements.
- Several optimizations and improvements made to the WeatherWarn functionality.
- All in all, about 70% of the code has been affected by these changes (one way or another); in other words, this marks a major revision to UAW that moves everything one step closer to handling some of the new features and capabilities planned. There is still a ton of work to be done, but with this commit, progress is clearly being made.
- Switched/upgraded INI code used with the ping process to use the new INI (SSDD) functionality.
- Added LocationName to the config window (if more than one location is enabled/active).
- Added UI to the main window to handle switching between Stations/Locations.
- Added functionality to retrieve update information side-stepping the Microsoft ClickOnce functionality for working around the internal (Microsoft) bug related to CheckForDetailedUpdate(). To enable, activate the "Enable Alt Update Checking" under "General".
- Implemented code to support new style licensing; old style is still supported until the transition is completed.
- Added support for generating weather output for multiple "locations" (same station, multiple region).
- Added "NULL" as a valid check to the NWS mapping.
- Modified Logging so that additional details are provided regarding the "station".
- Additional improvements to handle local (testing) support for audio paths that do not exist (local) - defaults to a path that does exist.
- Updated status bar so that more information is provided regarding the "station" that is currently being processed.
- Fixed an issue where "splicing" flag is not guaranteed to be cleared when splicing is completed.
- Added "default" mode for NWS and Yahoo for the lat/lon; if either value is blank, will use NRH as the default.
- Moved additional state machine values from "global" to "local" for each "station" being processed.
- Moved two sections of code to another file so that they can be flagged as late bound; allowing the rest of the existing code to be flagged as early bound (ConfigWindow).
- Tons of improvements to the ConfigWindow to handle additional licensing values, defaults, resets, etc.
- Removed the "Postal" value from the status bar since it is only available (valid) when using WU; which is being removed due to IBM shutting it down.
- Removed "Sites" menu (internal testing) since now have support for multiple "stations".
- Made some improvements to how licensing information is processed; made more efficient and now supports some basic "defaulting" due to features being enabled/disabled.
- Modified the "Refresh" feature so that it only refreshes the currently selected "station".
- Fixed issue with FirstRun() not properly handling multiple "stations".
- Moved checking for "ping" to occur within the loop for the "stations".
- Refactored code related to syncing license info across a single station / multiple location... merged, optimized.
- Modified polling reset for current conditions to be based on configuration setting instead of hard-coded to 15 minutes.
- Modified "forecast" interval from 60 minutes to 120 minutes.
- Flirted with the idea of creating a .NET 4.0 (Windows XP) version... too much work. Keeping the code "just in case" (under the UAW40 folder).
- Changed the voice "Unknown Female" to "Kathy Coolidge".
- Modified DetermineChunkInfo() to return default values if the file being looked at currently doesn't exist (instead of generating a "file not found" exception.
- Replaced old (Win32-based) SetFileDates() with a new version that uses what is available natively through .NET.
- Fixed an issue where the current (NWS) icon is not available causing an exception that was quietly being handled; now defaults to today/tonight as one would expect.
- Modified so that the log file will show the path/filename for a file where the server returns a 401 (resource not found) error.
- Added protection check to AddSilence() so that it will a) max out at 2.0 seconds regardless of what is asked for and b) log an error stating that it has done so.
- Added a validation (warning) to AppendAudio() so that it will write a warning to the log any time a segment is greater than 10 seconds.
- Added more details to the "Unable to check for updates" message in order to diagnose more completely (in an effort to resolve).
- Removed the "BETA!" label from the Volume Adjustment setting.
- Fixed issue with UAW "night" reporting as "sunny"; modified so that it states "clear".
- Added support for Yahoo.
- Fixed issue where crash upon sunrise/sunset not available.
- Fixed issue related to wind speed crashing if not available for night display on main screen.
- Modified so that "sunny" at night is shown as "clear".
- Added "Output Sets" (InOutCount=n) capability on a per station basis; this allows for a single forecast to be used more than once with different sets of intros/outros (main station, stream, etc.) This allows for specifying different filenames for the multiple output targets.
- Added 6 to 27 remap for NWS.
- Added sample to test/evaluate Yahoo API.
- Added placeholder for a possible new WeatherServices wrapper.
- Tweak/adjustments/bug fixes to NWS.
- Incorporated (first pass) the NWS Map file; need to verify that the map file is no longer necessary.
- Fixed some mapping issues now that it is integrated; removed "night" and handling half-day icons.
- Now doing a two pass check so that the conditions is first read in order to decode wind conditions (long form) and then re-read from another part of the XML to get a friendly display value for the actual current conditions (short form).
- Fixed issue with NWS wind direction "overflowing" if the value ended up at a 16; max is a 15... if 16, set to 0 ("N").
- Adjusted so that the call sign is not written every time the display is updated.
- Added a method (for me) to be able to quickly switch between locations/weather service to assist in testing.
- Added a short-circuit/override for icon #17 (thunderstorms) when running as NWS; all other values are +1'd except for 17?
- Added ALT+click to the image so that the website associated with the weather information is opened using the default web browser.
- Removed "REMAP" and "WU_REMAP" sections from the default INI file.
- Removed creating default WfxService_NWS.cfg and WfxService_NWS.map files.
- Added "script" to other day parts.
- Added Map API to convert Postal to Location. (Currently not used.)
- Fine-tuned some of the NWS condition mappings based on testing results.
- Changes related to NWS that took place during "Day-Of-Hell" 3/7/2019 thanks to WU discontinuing their service without me being aware of that fact ahead of time.
- Work in progress for the new "welcome" screen.
- If no voice is currently selected (None); SpliceForecastAsync will abort.
- If Sunrise and/or Sunset information is missing; DetermineImage will no longer "crash".
- Updated the default uaw.ini creation to match recent changes and remove any "default" licensing information.
- Removed the automatic creation of the WfxService_NWS.cfg and WfxService_NWS.map files as the NWS functionality is currently "unavailable".
- Added several "short-circuit" checks to the CheckLicenseAsync method to reduce network traffic in the case that the license information is missing / invalid.
- Modified so that the default voice will not default to the first voice available in the licensed voice list if the currently selected voice is "None".
- Added license check to the F5 key if the license is currently invalid.
- If the license is valid at startup but then becomes invalid, will now update the main screen to reflect that there is a problem with the configuration.
- Modified the actions that take place when closing the Config screen to better account for licensing settings being entered/updated/removed.
- Completed the removal of the word WeatherWarn.ini; lookup list that was needed is now internal to UAW.
- Modified the default WeatherWarn.DAT file that is generated to match internal features.
- When WeatherWarn refreshes, the clearing of the current values in the WeatherWarn.DAT file is more "complete".
- First pass at modifying the Voice property in the Config window so that only licensed voice(s) are available.
- Added URL to a few of the classes to remember where the original documentation behind the approach was found.
- Added descriptions to all of the voices.
- Improved the licensing check so that if a voice is currently selected but no longer licensed, the voice will be modified to the first voice in the licensed list.
- Remove duplicate variables OutroDefault and OutroAutoFit.
- Modified the # portion of the Audio Segments so they adjust (renumber) automatically depending on what add-on's are available.
- Modified the behavior associated with clicking on the "cloud icon"; regular left-click will open the file location as to where the output is configured, left-click while pressing the CTRL key will open the UAW folder; left-click while pressing the SHIFT key will launch the output file using Windows Media Player. If any of the paths/files do not exist, a message is presented with the details.
- Change Zone ? - Code/Name to Area ? - Code/Name under the WeatherWarn section.
- Added a "join.me" menu to the main screen under Tools.
- If the Voice setting changes (Config), the temporary and output wav files will be removed (deleted).
- Some code clean-up in the SpliceForecastAsync method related to generating the Weather10 output.
- Fixed issue with not reading the Intro Schedule and Outro Schedule sections from the uaw.ini file due to upper/lower-casing issue.
- Replaced the old audio append mechanism with completely new version that a) should handle audio files containing additional "chunks" better (not resulting in a click noise), b) adds the ability to adjust the output volume by a +/- percentage and c) eventually allow for async. Currently this functionality is BETA and opted in by using the VolumeAdjust setting. If the Setting is 0, the old mechanism is still used while the new one is being tested. The goal is to completely remove the old way once testing has been completed.
- Removed WeatherWarn reset if both WarnBefore and WarnAfter were set to False. There are circumstances where it might be desirable to temporarily disable WeatherWarn; leaving the settings for which audio components to include intact - thus meaning that these settings should be completely independent.
- Added the creation of the default WeatherWarn.dat file (if needed).
- Removed OncePerMinute and AudioBuildRate settings as they are essentially useless; whenever the weather is received from the source, the output is generated; if time announce is enabled, need to run every minute anyway.
- Added [INTRO] "tag" to the displayed script (main window); if enabled.
- Migrated Email, EmailSettingsDialog, Extensions, DarkColorTable, FixedLengthString and Support to SSD library.
- Now supports "location.wav" as a very small and specific prefix to the current and repeatcurrent audio segments.
- Modified to use the new "single instance" method.
- Added comments throughout the "splice" process; additionally, the process now includes significantly more "status" updates (main window) while processing the splicing.
- Refactored how the time announce and intro work are determined and with one another when doing the final splice.
- Modified the "in use" messaging so that it now counts down while waiting for the final output file to be available (not in-use).
- Removed the Win32 API call InternetGetConnectedStateEx as it is to be assumed that an internet connection will exists; no need to actually check and reduces the need to be run exclusively in Win32 mode. Doesn't eliminate at this point since there are still other Win32 API's to be reviewed/removed.
- Removed "old" WeatherWarn application.
- Removed XM values.
- Removed unused WxAlert code.
- Completed initial pass a "true" native integration of WeatherWarn.
- If license is invalid (for whatever reason), the "outdated" output file is automatically removed so that a stagnant forecast doesn't continue to be aired.
- Work in progress furthered with regards to merging variables that serve the same purpose so that config changes can apply immediately.
- Initial pass at "add-on" inclusion.
- Pulled error trap code out of the GetTextFromUrlAsync method; instead, it is now the callers responsibility to wrap for a possible exception. This allows for special handling "in-scope" when an error occurs.
- Removed / merged many timers into a single, unified timer that has a higher resolution.
- Split UawIni into a separate file.
- Added functionality to the Config window that can allow for toggling visibility and/or read-only state for the individual values.
- Cleanup/review of the default uaw.ini file.
- Modified how the ping process works; if can't communicate with the server, the application will temporarily suspend activity except for continuing to attempt to successfully complete ping.
- Modified so that the every minute generation of the output is done at the top of the minute (ie. xx:xx:00).
- Application can now execute with a missing/invalid license so that the config window can be used to correct the issue.
- When closing the Config window, ping, weatherwarn and splicing are all executed immediately/automatically.
- Modified so that the Logging(), SpliceForecast() method is now "async".
- Modified the "delay" mechanism when the output file is "in-use" so that it will work async so that the main application doesn't appear to "lock-up" (which Windows 7 will then apparently prompt to close).
- Added more status bar updates to the main window when it is processing.
- Modified the order and names of the voices in the Config window.
- Consolidated downloading of audio into CloudAudio().
- Improved performance of determining parts to be spliced so that portions that aren't actively enabled aren't downloaded anyway (wind).
- Replaced the NWSLink setting with a more appropriate set of settings named NWSLat and NWSLon since that is actually what needs to be modified.
- Removed WULink2 and WUData settings as they are not used.
- Hiding NWSCfg, NWSMap and WxAlertDatabase from the Config window as these aren't settings that can/should be modified.
- Improved Intro, Outro and UseHCIndex so that they now take affect while the config file is still open.
- Refactored GetWxForecast(); still needs further optimizations. Currently appears to be reading the data file 2x???
- Removed WUCity from being set in the default created uaw.ini.
- First pass at optimizing the reading and writing of the uaw.dat file.
- Removed old Sub Main(); removed many unused variables.
- It appears that the wind direction for the current conditions retrieved WU can sometimes be "calm". The caused the main display to be shown strangely ("0.9 from CALM"). This is now accounted for.
- Fixed a bug where the wind direction retrieved from WU processed in DecodeCc was not handled the same as other methods; this allowed for "South" (for example) to not be adjusted to "S" causing the current conditions to state "north" due to not understanding "South" as a direction. This is now correct.
- If the current wind speed or direction is "calm", the wind phrase is now skipped.
- Removed the old (v3) weather window... all functionality has been integrated with the main window.
- Modified so that precip is still allowed if wind is disabled to match the prior behavior of TimePadding = true.
- Added mechanism to automatically create the output folder if the output folder doesn't currently exist (during config).
- Ping process is now "async".
- Modified the "current condition" display by removing "noise" and adding initial pass as the "script" display.
- Removed the clearing of AlertConditionN in DecodeAtom() call (WeatherWarn).
- Significantly improved the startup time (reduced).
- Removed initial "splash screen" (please wait).
- Removed call to ChkChannelStatus() as it is no longer necessary (or desired); if the information needs to be pulled from the weather service... pull it, not relying on a (most likely) outdated cache of it when initially starting the application.
- Refactored GetCc to GetCurrentConditionsAsync; added status update information that details what is currently taking place (main screen).
- Refactored non-configuration tasks out of the initial loading of the application to a FirstRun process that takes place immediately after loading / initializing the main window in an effort to keep a responsive UI.
- Added support for the left and right arrow keys, page up, page down and home keys to be used to modify what is being viewed on the main screen.
- Removed "Pause" setting from the uaw.ini; was "sort of" used. With that said, it was always reset upon usage so being in the uaw.ini makes no sense.
- Removed code related to the old tray icon; going forward, this tray icon approach doesn't make much sense. Windows 10, for example, will keep hiding it after each update. Additionally, it slow in showing the menu and overall holds back from forward progress.
- Did some remodeling of the config window to improve readability. Took a moment to reorg / rename some of the entries in an effort to make things more clear as to what "goes together".
- The Refresh and CurrentConditions timer actions are now executed async.
- Added additional details to the About window.
- There existed a "Current" setting in the uaw.ini; however, it never actually did anything. Based on listening to a conversation about "what it should do" (without any outside influence), the setting now includes (or not) the current conditions at the beginning of the forecast. However RepeatCurrent = True and Current = False results in the current conditions still being included, but only at the end of the file.
- Added the "hand" mouse cursor to items on the main screen that can be clicked.
- Modified WeatherWarn window so that it a) centers on the main window upon launch, b) will only have one copy - if launched a second time will open the first, c) has a very visible "BETA" moniker on the window.
- Completely redesigned the About window; now launches as a "modal" window.
- Modified Logging() so that it now honors the Logging setting; if Logging = False, will only log errors (if any).
- Fixed issue with "Parts" being logged when setting is disabled.
- Modified SkyIconN so that it returns sooner; for whatever reason Alan was adding two to the number after it was translated????
- Modified visible glyph of the weather on the main screen so that the "night time" versions are displayed under the appropriate conditions.
- Modified the Configuration window; new look and Esc key now closes.
- Completely redesigned the main screen. Lots of little improvements, adjustments, color changes, layout changes, etc.
- Updated the creation of the default uaw.ini; removed some extra lines, modified some of the default settings and added the default license key.
- Added tons of additional status messages to the status bar (now that there is an area available).
- Added additional ping details in order to improve overall support.
- Will now attempt to determine if the output file is "in use". If it is, will wait up to 45 seconds before giving up copying the temporary file to the output file destination. Any errors that are preventing writing to the output file are logged. Note that Windows Media Player will maintain the file lock until you play a different file; even if the current file has completed playback. The Groove music player, on the other hand, doesn't appear to maintain any sort of file lock while playing the audio; so UAW will overwrite the file causing Groove to report that the file no longer exists mid-playback.
- Added protection against possible NullReferenceException in DisplayCurrentConditions() if WindSpeed, WindTextDirection or BarometerDescription is NULL.
- Modified so that the creation of files with default values is still created even if the main uaw.ini file already exists; this facilitates easily replacing the uaw.ini file for testing purposes.
- Added additional placeholder entries to the weatherwarn.dat file.
- Moved the Temp1.wav and Temp2.wav file so the Output folder.
- Fixed an issue with a .wav file (no name) being looked for when trying to include the precip for tomorrow night; in other words, precip for tomorrow night never worked - it would, instead, possibly have a false positive with another entry.
- Fixed issue with checking the for whether or not the output file in-use failing to properly flow forward if the output file didn't already exist (fresh install).
- Modified uawdataN.ini to be uawN.dat; removed all settings (migrated some to uaw.ini). This means that the uawN.dat file can now be removed safely and it (they) will automatically be created based on content received.
- Fixed an issue where the tomorrow (day) forecast will fail for temperatures between 0 and 3 degrees due to invalid filename.
- Removed several settings from being saved to the uaw.ini file; the majority of these are either not in use or simply don't work - possibly due to being obsoleted. In a pinch, the values are still "active" on the read side meaning that they still work... just not written.
- Modified the path settings so that if they are cleared in the .ini they will automatically be set to appropriate defaults.
- If a duplicate key in a section is found in an INI file, it will be ignored; the first one encountered "wins". This can only happen if the file is manually edited outside of the software.
- Removed the creation of default uaw.dat, wfxservice_wu.ini and wfxservice_wu_map.ini as they appear to not be used.
- Renamed the wfxservice_nws.ini to wfxservice_nws.cfg (the original name from v3) and wfxservice_nws_map.ini to wfxservice_nws.map (as in the v3 version) to more easily facilitate migration from v3 to v4. If these files do not exist, they are automatically created using default information.
- Modified to read WeatherWarn from the WeatherWarn.DAT file instead of the Windows registry.
- Added on-demand downloading of missing alerts.
- Reorganized (grouped) several of the General settings into other more similar categories.
- Removed Watchdog related settings (not used).
- Added protection against re-entrant calls to SpliceForecast().
- Modified GetCc() so that it only calls SpliceForecast() once per pass.
- Optimized further the "update" that occurs after closing the Config window.
- Improved variable length audio generation so that it now honors the settings for Today, Tonight, WindToday, WinTonight, etc.
- A full "refresh" is now automatically performed when you close the Options window so that any changes that were performed are applied immediately allowing for the Play button to be used to preview said changes (if any).
- Removed Tray and Task Icon settings.
- Several modification to the Options window to better handle the DefaultVoice setting (names) and comparisons for path settings (defaults).
- Initial pass at integrating WeatherWarn directly into UAW.
- Cleaned up data display; added retrieved date/time.
- Reordered status bar items.
- Removed F/C setting; not used.
- Added F5 hotkey to refresh.
- Added ESC hotkey to minimize the screen.
- When starting up, the downloading of audio is now displayed in WaitForm.
- Refactored start up so that several of the tasks are now separate sub-methods.
- Separated the SpliceForecast from the TrayIcon.
- Moved LicenseKey setting to UAW.ini.
- Further tweaks to the GetIni method to optimize the reading of settings from UAW.ini.
- Using new Load/Save of the UAW.ini in the startup process; still need to migrate everything else to use a unified settings reader/writer.
- Config window now saves changes on close to the UAW.ini.
- Added a Play button to the main window that will launch the default playback application for the output file.
- Replaced ReadMap with new version that takes advantage of loading the UAW.ini file initially (once).
- Renamed the class holding the UAW.ini information to g_uawIni (much more appropriate of a name than WfxSettingType).
- Moved all code responsible for reading/writing the uaw.ini into a single class.
- Started on the process of refactoring of the UawIni class so that the reading/writing of the actual ini is optimized (right now it opens/closes the file for every value being read/written).
- Modified SkyIcon and SkyIconN to use REMAP for NWS and REMAP_WU for WeatherUnderground.
- Modified UawIni so that reading/writing of the INI is done once for all settings (caching) which significantly improved the performance related (reduce startup time).
- Removed upgrade/migration code for now since that is not the current focus.
- Modified how default settings are determined/created.
- Added new "config" window for viewing (eventually editing) the UAW.ini.
- Transitioned the WfxSettingType from a Structure to a Class.
- Added call to ReadMap to the startup process (reads the UAW.ini).
- Removed ReadMap() call from the SpliceForecast, GetCc and GetForecast routines.
- Added SpliceForecast call to UpdateTray regardless of whether or not EnableTrayIcon is enabled.
- Modified MainForm to show current conditions, moved calls, city and postal to status bar. Added build to status bar. Made status bar visible by default. Moved several components from MainForm to TrayIconConfig in case want to reuse these for configuration of the tray icon later.
- Work in progress of transitioning away from the default behavior being running as a tray icon to being a "regular" application. Added two now options, DisableTaskBarIcon and EnableTrayIcon, to help facilitate this.
- Moved initial determination and loading (of some) settings to the very start of the application initialization process; this is so that I can enable...
- Added SilentStartup and SilentUpdate options to the UAW.ini file to (for now) hide the WaitForm window during startup / update.
- Removed creation of the Alerts_Short folder; apparently this is currently a manual process to switch between the default and the short alerts.
- Moved where the folders audio folders are created to just prior to when they are actually needed (on-demand).
- Added GetIniBoolean function to better facilitate / make more consistent reading of Boolean values from the ini file.
- Added exception catch around the GetResponse in the CreateFileFromURL method.
- Some cosmetic improvements related to the WaitForm window.
- Modified the appending of audio process so that, if the source file doesn't exist, will log the situation and abort the process.
- Migrating away from "ON ERROR" to "TRY CATCH"...
- Added "on-demand" folder creation for the audio folders.
- Modified to support "on-demand" download of audio for all voices.
- Improved calculation for whether or not to include windchill/headindex.
- Added more logging entries...
- Slight refactoring of the GetIni() function.
- Modified minimum build (alternate) checking so that if it is blank it is ignored.
- Completed changes and testing on the automatic update mechanism.
- Added additional logging for startup and shutdown.
- Added detailed error message for "unhandled" exceptions.
- Modified UseHCIIndex to be defaulted to false.
- Added default versions of WfxService_NWS.ini and WfxService_NWS_Map.ini.
- Removed checking for the V1\Time and V1\Alerts folders during startup.
- Modified alternate new version checking to just review the build portion of the version #.
- When shutting down, enhanced the system so that all running timers are suspended and fixed some issues that "slowed" the shutdown process down.
- Replace application icon with something more "modern" and more representative of the application (clouds).
- Enabled 10-minute interval for checking to see if a new version is available.
- Modified error routine to exits the application regardless of how it is encountered.
- Fixed issue with "previous instance" message being shown while the "please wait" window is active; temporarily hide the "please wait" while prompting.
- Initial ClickOnce deployed version; it is most likely that several new releases will be necessary to fully test the ClickOnce deployment integration.
- A "splash screen" is now visible during the initial launch of the application.
- Fixed issue with current condition information being removed just prior to generating the weather announcement.
- Added first pass at automatic-migration from v3 to v4.
- Added default "data" file generation in the event that the files do not currently exist (especially during initial install / setup).
- Now including "windcalm" condition if Intro and Outro are disabled.
- Major migration / port / shift from 20 year old technology (circa 1998) to more modern platform / tools based on Microsoft .NET v4.7.2. Note that this does mean that v4.x will only work on more recent / current versions of Microsoft Windows.
- All "data" is now located under a "My Documents" folder (Shiny Stone Digital \ UAW); which means that it is no longer necessary to "run-as-administrator" or change security settings on the file system to operate.
- All "data" files are now identified with the .INI file extension; easily openable using Notepad.exe.
- All separate (error, debug, regular) log files have been merged into a single log; these log files also include the year as part of the filename to make it easier to clean up over time.
- "Global" error trapping is now included in the event of a critical failure; this means that whatever error could cause the application to exit unexpectedly is now logged so that the root issue can be identified and corrected.
- It is now possible to generate variable-length weather announcements.
- Fixed issue with the "ghost" icon appearing (sometimes) in the taskbar when first launching the application.
- Fixed issue with regards to computing the amount of silence to inject when creating a fixed-length weather announcement when there is more than two total seconds of silence needed (was effectively doubling the amount needed when more than two seconds).
- Intro and Outro can now be completely disabled.
- Fixed issue when zero-byte files being created when audio assets were unavailable.
- If an audio asset does not exist, it is now logged to the log file.
- Removed duplicate calls to retrieve current conditions.
The term "Legacy Version" as related to Unattended Weather is the older v3.xx UAW.exe. At the time of this writing (1/22/2019), the legacy version of Unattended Weather is the official current release at v3.45. UAW 4.x is currently in BETA and will become the official version once testing has been completed.
Features that have been "dropped" in the move to v4:
- MP2 and MP3 audio compression.
It is important to understand that we adhere to the philosophy of "release early, release often" through a "continuous delivery" model. What this means to you is that we are extremely enthusiastic to share with you any completed improvements as soon as they are available to that you can take advantage of these NOW!
This, of course, can't be done without your participation. It is extremely important that you take a moment to review the latest release notes. If you have any questions, comments or need additional in-depth assistance with any of the improvements please feel free to reach out to us.