780 Commits

Author SHA1 Message Date
Jacob Roeland
73cbc0aa81 Add "No Data" icon
Supports #94
2025-07-25 21:23:23 -04:00
Eddy G
eb412a0cae Add intelligent station name processor
This is intended to replace the simple regex truncation (`city.match(/[^,/;\\-]*/)[0].substr(0, 12)`)
with a file that has all the station name processing already pre-processed by the logic in the stations
post-processor script. It uses priority-based conflict resolution to avoid duplicate station names by
using airport classification hierarchy. It handles complex naming patterns including military facilities,
county airports, hyphenated cities, slash/comma separators, and "at/near" qualifiers with a minium number
of exceptions.

This changes station data pipeline to generate stations-raw.json first, then process through the
post-processor to create the final stations.json compatible with existing codebase.
2025-07-17 16:10:34 -04:00
Matt Walsh
9150d42802 5.27.2 v5.27.2 2025-07-15 22:13:04 -05:00
Matt Walsh
54257e4667 add new naming issue template 2025-07-15 22:07:52 -05:00
Matt Walsh
7d50ce28bd Allow for station data overrides #125 2025-07-15 22:00:33 -05:00
Eddy G
c3d863f89f Fixup mapclick.mjs 2025-07-13 22:45:04 -04:00
Eddy G
996baa78aa Add MapClick adapter and "fallback" logic when observations are stale
- Create utils/mapclick.mjs with centralized MapClick API functionality
- Refactor modules to use the new utility:
  - Current Weather
  - Latest Observations
  - Regional Forecast
- Add staleness checking utility for use by modules
2025-07-13 22:10:41 -04:00
Eddy G
e81c957416 Remove legacy mapclick icon references
- https://api.weather.gov/icons should be the only icons used by api.weather.gov
2025-07-13 19:45:52 -04:00
Eddy G
d25a632f7d Switch back to using j69.ejs-beautify
- Reformat index.mjs
- Don't preload playlist.json to avoid Safari warning about
  unused preloaded resource
2025-07-13 19:45:52 -04:00
Eddy G
4b34ffabcb Fix retry count display in doFetch 2025-07-13 19:45:52 -04:00
Matt Walsh
2db7f30de7 5.27.1 v5.27.1 2025-07-11 22:36:57 -05:00
Matt Walsh
5c7a6ab1a4 fix for rss feed encoding types close #124 2025-07-11 22:36:47 -05:00
Eddy G
ee4f84689a Add rule to allow devDependencies in dev-related config files 2025-07-07 12:51:09 -04:00
Eddy G
804d9e9e33 Centralize icon URL parsing; improve icon error handling
- Move common icon parsing logic into module
- Return a "real" icon value during error handling to avoid downstream
  consumers from trying to use an icon named "false"
- Use named regex to parse icon URLs based on API specification
2025-07-07 12:43:32 -04:00
Eddy G
3e8135a36a Improve settings initialization timing with deferred DOM updates
Defer DOM updates to ensure settings are properly applied
even when read from localStorage before the DOM is available.
2025-07-07 12:43:32 -04:00
Eddy G
9c5ed0dcca Improve error handling to help prevent runtime errors
Adds input validation and safe property access to utility functions
to handle edge cases and invalid arguments gracefully
2025-07-07 12:43:32 -04:00
Eddy G
a3c581aa93 Clarify instructions for iOS/iPadOS and Android 2025-07-07 12:43:32 -04:00
Eddy G
771ab37eaf Improve cache error handling in various edge cases
- Add null-safe operations and fallbacks for missing properties
- Simplify retry logic and enhance error logging
- Enable default retries and improve timeout handling
2025-07-07 12:43:32 -04:00
Matt Walsh
4b63328b74 update dependencies 2025-07-06 10:54:20 -05:00
Matt Walsh
ae1d004f60 Merge pull request #123 from rmitchellscott/fix-static-envs
fix: url encode envs in static-env-handler. Fixes #122.
2025-07-06 10:36:51 -05:00
Eddy G
2a975d4d6d Fix auto-play logic for sticky kiosk mode
The previous logic only checked URL parameters for kiosk mode,
but sticky kiosk can enable kiosk mode from localStorage without
URL parameters. Now checks actual kiosk setting value.

Fix typo in scan line settings name.
2025-07-04 14:55:57 -04:00
Mitchell Scott
7dd4c1dd24 fix: url encode envs in static-env-handler. Fixes #122. 2025-07-04 04:41:56 -06:00
Eddy G
10baefc901 Merge remote-tracking branch 'upstream/main' into modernization-and-refactor 2025-07-02 09:08:07 -04:00
Eddy G
46edf1f7e2 Add "Settings" section to README 2025-07-02 08:44:12 -04:00
Eddy G
67dfd7ec08 Add "Sticky Kiosk" setting that stores "Kiosk" mode when activate
- This setting is important to allow creation ofa Home Screen app on iOS/iPadOS
- If kiosk mode is accidentally made sticky, it can be cleared by adding '&kiosk=false` to the URL
- Ctrl-K will now also exit kiosk mode

This adds a `stickyRead` parameter to settings, that means "read it if it's there, but don't write it"
2025-07-02 08:11:52 -04:00
Eddy G
2761f76117 Build CSS changes 2025-07-02 08:11:52 -04:00
Eddy G
13621b6f46 Stop Mobile Safari from trying to auto-fill the location box
This change prevents the "No items to show" popup that obscures the first
couple suggested matches.
2025-07-02 08:11:52 -04:00
Eddy G
b49433f5ff Add responsive scaling; improve scanlines and Mobile Safari support
- Replace CSS zoom with CSS transform scaling for better mobile compatibility
- Implement wrapper-based scaling approach that includes both content and navigation bar
- Replace Almanac layout with CSS Grid for better cross-browser layout
- Greatly improve scanline algorithm to handle a wide variety of displays
- Add setting to override automatic scanlines to user-specified scale factor
- Remove scanline scaling debug functions
- Refactor settings module: initialize settings upfront and improve change handler declarations
- Enhance scanline SCSS with repeating-linear-gradient for better performance
- Add app icon for iOS/iPadOS
- Add 'fullscreen' event listener
- De-bounce 'resize' event listener
- Add 'orientationchange' event listener
- Implement three resize scaling algorithms:
  - Baseline (when no scaling is needed, like on the index page)
  - Mobile scaling (except Mobile Safari kiosk mode)
  - Mobile Safari kiosk mode (using manual offset calculations)
  - Standard fullscreen/kiosk mode (using CSS centering)
2025-07-02 00:22:06 -04:00
Matt Walsh
1120247c99 include custom rss feed in build #57 2025-06-30 23:32:30 -05:00
Matt Walsh
c5c01e5450 5.27.0 v5.27.0 2025-06-30 23:29:46 -05:00
Matt Walsh
0a65221905 update readme for custom rss close #57 2025-06-30 23:29:39 -05:00
Eddy G
cc9e613ba7 Merge remote-tracking branch 'upstream/main' into modernization-and-refactor 2025-06-29 22:42:03 -04:00
Matt Walsh
9f9667c895 add single text scroll option #57 2025-06-28 09:20:36 -05:00
Matt Walsh
fda44e95fc rss feeds scroll, needs additional testing #57 2025-06-28 00:59:40 -05:00
Matt Walsh
945c12e6c6 parse rss feed #57 2025-06-28 00:29:55 -05:00
Matt Walsh
0fde88cd8f restructure current weather scroll to allow add/remove of rss feed #57 2025-06-28 00:29:47 -05:00
Matt Walsh
c6af9a2913 5.26.2 v5.26.2 2025-06-27 22:30:05 -05:00
Matt Walsh
11eba84cdb fix for calm/0mph wind close #121 2025-06-27 22:29:56 -05:00
Matt Walsh
b9ead38015 5.26.1 v5.26.1 2025-06-27 22:17:00 -05:00
Matt Walsh
3d0178faa1 radar scrolling fix for ios 2025-06-27 22:16:51 -05:00
Eddy G
b1c4e6d850 Merge remote-tracking branch 'upstream/main' into modernization-and-refactor 2025-06-27 18:21:32 -04:00
Matt Walsh
8a2907e02c fix display of null wind speed 2025-06-27 15:35:15 -05:00
Matt Walsh
b870ce1c01 store already processed radar images for reuse on silent reload 2025-06-27 15:29:20 -05:00
Eddy G
90c1ab92b4 Merge upstream/main: integrate radar worker removal and improvements
- Remove radar-worker.mjs and integrate functionality into radar-processor.mjs
- Update package.json and gulpfile.mjs with upstream changes
2025-06-27 11:05:32 -04:00
Matt Walsh
15107ffe1c 5.26.0 v5.26.0 2025-06-27 08:56:14 -05:00
Matt Walsh
efd4e0c66d Remove workers from build processes 2025-06-27 08:56:04 -05:00
Matt Walsh
652d7c5fb0 Merge remote-tracking branch 'origin/radar-no-worker' #74 #140 2025-06-27 08:54:50 -05:00
Matt Walsh
5a80f43f30 add staging gulp tasks 2025-06-26 22:30:42 -05:00
Matt Walsh
6d090cb1c7 streamline radar tile layout calculation #74 2025-06-26 21:23:44 -05:00
Eddy G
17585e97c4 Update README to clarify deployment modes and music handling
- Add clear distinction between Server and Static deployment modes
- Restructure run instructions with specific npm commands and their purposes
- Clarify Docker deployment scenarios (static vs server, with examples)
- Rewrite music section to explain server-side vs browser-side playlist generation
2025-06-26 20:39:18 -04:00