Shane McGovern
d59a9522ee
Fix mod update checks failing on non-JSON responses ( #931 )
...
The mod update and Find Mods feeds feed the raw HTTP body straight to
Json.decode. When the endpoint hands back something that is not JSON
(an HTML error page, a proxy/captive prompt, or a plain-text outage
message like "Exceeded secondary rate limit" -- usually still HTTP 200),
the decoder's "unexpected character 'E'" assert escaped through the
pcall and became the error message, blaming the parser instead of the
response.
Add Json.describeUnexpected() as a pre-decode content-type guard: it
returns nil for body shapes the endpoints actually publish (JSON object
or array) and otherwise a short message naming what the server sent
(HTML page / plain text / empty, with a preview). Wire it into
ModUpdate.parseReleases and ModIndex.parse, so both the sync and async
update-check paths surface the real answer instead of the parse error.
HTTP status was already checked upstream by HostShell.httpGet (non-2xx
becomes "HTTP <code> from <url> (...)"); this closes the remaining
"2xx but not JSON" gap everywhere, including bridge platforms that
expose no status or headers.
Add regression tests for plain-text, HTML, and empty bodies; strengthen
the ModIndex HTML soft-fail test.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
2026-08-07 10:49:10 +01:00
..
2026-08-01 16:04:22 -06:00
2026-08-01 21:36:30 -06:00
2026-08-03 16:35:18 -03:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
2026-08-01 22:55:58 -06:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
2026-08-03 14:50:28 -03:00
2026-08-05 10:25:19 -04:00
2026-08-06 09:55:28 -04:00
2026-08-05 14:38:10 -04:00
2026-07-25 15:21:49 -04:00
CLOSES #455 , CLOSES #487 , CLOSES #501 , CLOSES #540 , CLOSES #585 , CLOSES #591 , CLOSES #593 , CLOSES #595 , CLOSES #597 , CLOSES #599 , CLOSES #600 , CLOSES #606 , CLOSES #607 , CLOSES #610 , CLOSES #613 , CLOSES #616 , CLOSES #620 , CLOSES #626 , CLOSES #632 , CLOSES #633 , CLOSES #647
2026-08-02 08:19:28 -04:00
2026-08-06 06:36:12 -04:00
2026-08-02 12:44:38 -06:00
2026-08-02 12:44:38 -06:00
2026-07-30 07:41:41 -04:00
CLOSES #455 , CLOSES #487 , CLOSES #501 , CLOSES #540 , CLOSES #585 , CLOSES #591 , CLOSES #593 , CLOSES #595 , CLOSES #597 , CLOSES #599 , CLOSES #600 , CLOSES #606 , CLOSES #607 , CLOSES #610 , CLOSES #613 , CLOSES #616 , CLOSES #620 , CLOSES #626 , CLOSES #632 , CLOSES #633 , CLOSES #647
2026-08-02 08:19:28 -04:00
2026-07-19 16:18:18 -04:00
2026-08-02 21:36:56 -03:00
2026-07-19 16:18:18 -04:00
2026-07-19 16:18:18 -04:00
2026-07-19 16:18:18 -04:00
2026-07-30 11:44:16 -04:00
2026-07-19 16:18:18 -04:00
2026-08-04 15:17:09 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
2026-07-30 07:41:41 -04:00
2026-08-06 13:35:07 +01:00
CLOSES #455 , CLOSES #487 , CLOSES #501 , CLOSES #540 , CLOSES #585 , CLOSES #591 , CLOSES #593 , CLOSES #595 , CLOSES #597 , CLOSES #599 , CLOSES #600 , CLOSES #606 , CLOSES #607 , CLOSES #610 , CLOSES #613 , CLOSES #616 , CLOSES #620 , CLOSES #626 , CLOSES #632 , CLOSES #633 , CLOSES #647
2026-08-02 08:19:28 -04:00
2026-08-01 12:56:13 -04:00
2026-08-06 09:57:31 -04:00
2026-08-01 05:27:07 -03:00
2026-08-01 04:24:57 -03:00
2026-08-01 03:53:37 -03:00
2026-08-04 14:08:15 -04:00
2026-08-01 03:53:43 -03:00
2026-08-01 04:24:57 -03:00
2026-08-03 13:02:08 -03:00
CLOSES #339 , CLOSES #354 , CLOSES #360 , CLOSES #372 , CLOSES #373 , CLOSES #374 , CLOSES #375 , CLOSES #378 , CLOSES #379 , CLOSES #383 , CLOSES #384 , CLOSES #385 , CLOSES #391 , CLOSES #392 , CLOSES #393 , CLOSES #394 , CLOSES #395 , CLOSES #396 , CLOSES #397 , CLOSES #398 , CLOSES #413 , CLOSES #420 , CLOSES #423 , CLOSES #424 , CLOSES #425 , CLOSES #426 , CLOSES #427 , CLOSES #429 , CLOSES #430 , CLOSES #431 , CLOSES #433 , CLOSES #435 , CLOSES #436 , CLOSES #438 , CLOSES #439 , CLOSES #441 , CLOSES #442 , CLOSES #444
2026-07-30 11:14:51 -04:00
2026-07-30 11:35:57 -04:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
2026-08-04 10:15:10 -04:00
2026-08-04 15:17:09 -04:00
2026-08-06 10:29:43 -03:00
2026-08-06 09:57:31 -04:00
2026-07-29 12:53:24 -03:00
2026-08-06 09:57:31 -04:00
CLOSES #339 , CLOSES #354 , CLOSES #360 , CLOSES #372 , CLOSES #373 , CLOSES #374 , CLOSES #375 , CLOSES #378 , CLOSES #379 , CLOSES #383 , CLOSES #384 , CLOSES #385 , CLOSES #391 , CLOSES #392 , CLOSES #393 , CLOSES #394 , CLOSES #395 , CLOSES #396 , CLOSES #397 , CLOSES #398 , CLOSES #413 , CLOSES #420 , CLOSES #423 , CLOSES #424 , CLOSES #425 , CLOSES #426 , CLOSES #427 , CLOSES #429 , CLOSES #430 , CLOSES #431 , CLOSES #433 , CLOSES #435 , CLOSES #436 , CLOSES #438 , CLOSES #439 , CLOSES #441 , CLOSES #442 , CLOSES #444
2026-07-30 11:14:51 -04:00
2026-08-03 20:43:27 +02:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
2026-08-04 12:06:21 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
2026-08-07 10:49:10 +01:00
2026-08-07 10:49:10 +01:00
CLOSES #788 , CLOSES #795 , CLOSES #796 , CLOSES #797 , CLOSES #805 , CLOSES #826 , CLOSES #833 , CLOSES #835 , CLOSES #837 , CLOSES #844 , CLOSES #845 , CLOSES #846 , CLOSES #847
2026-08-05 11:09:05 -04:00
2026-07-30 07:41:41 -04:00
2026-07-31 14:34:58 +00:00
CLOSES #788 , CLOSES #795 , CLOSES #796 , CLOSES #797 , CLOSES #805 , CLOSES #826 , CLOSES #833 , CLOSES #835 , CLOSES #837 , CLOSES #844 , CLOSES #845 , CLOSES #846 , CLOSES #847
2026-08-05 11:09:05 -04:00
2026-08-03 14:28:13 -03:00
2026-08-03 16:14:33 -03:00
2026-08-03 16:35:18 -03:00
CLOSES #455 , CLOSES #487 , CLOSES #501 , CLOSES #540 , CLOSES #585 , CLOSES #591 , CLOSES #593 , CLOSES #595 , CLOSES #597 , CLOSES #599 , CLOSES #600 , CLOSES #606 , CLOSES #607 , CLOSES #610 , CLOSES #613 , CLOSES #616 , CLOSES #620 , CLOSES #626 , CLOSES #632 , CLOSES #633 , CLOSES #647
2026-08-02 08:19:28 -04:00
2026-08-02 16:21:49 +01:00
2026-08-01 11:01:19 -04:00
CLOSES #604 , CLOSES #666 , CLOSES #716 , CLOSES #727 , CLOSES #763 , CLOSES #781 , CLOSES #784 , CLOSES #799 , CLOSES #801 , CLOSES #810 , CLOSES #828 , CLOSES #834 , CLOSES #838 , CLOSES #849 , CLOSES #852 , CLOSES #857 , CLOSES #863 , CLOSES #864 , CLOSES #867 , CLOSES #869 , CLOSES #870 , CLOSES #872 , CLOSES #839
2026-08-05 16:36:37 -04:00
CLOSES #604 , CLOSES #666 , CLOSES #716 , CLOSES #727 , CLOSES #763 , CLOSES #781 , CLOSES #784 , CLOSES #799 , CLOSES #801 , CLOSES #810 , CLOSES #828 , CLOSES #834 , CLOSES #838 , CLOSES #849 , CLOSES #852 , CLOSES #857 , CLOSES #863 , CLOSES #864 , CLOSES #867 , CLOSES #869 , CLOSES #870 , CLOSES #872 , CLOSES #839
2026-08-05 16:36:37 -04:00
2026-08-03 16:38:07 -04:00
2026-08-04 12:42:22 -04:00
2026-07-25 15:21:49 -04:00
2026-07-25 15:21:49 -04:00
2026-07-31 01:44:17 +00:00
2026-08-03 09:58:53 -03:00
2026-08-03 09:58:53 -03:00
2026-08-04 15:36:35 +01:00
2026-08-03 13:05:57 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
2026-07-30 07:41:41 -04:00
CLOSES #788 , CLOSES #795 , CLOSES #796 , CLOSES #797 , CLOSES #805 , CLOSES #826 , CLOSES #833 , CLOSES #835 , CLOSES #837 , CLOSES #844 , CLOSES #845 , CLOSES #846 , CLOSES #847
2026-08-05 11:09:05 -04:00
2026-08-01 12:56:13 -04:00
CLOSES #455 , CLOSES #487 , CLOSES #501 , CLOSES #540 , CLOSES #585 , CLOSES #591 , CLOSES #593 , CLOSES #595 , CLOSES #597 , CLOSES #599 , CLOSES #600 , CLOSES #606 , CLOSES #607 , CLOSES #610 , CLOSES #613 , CLOSES #616 , CLOSES #620 , CLOSES #626 , CLOSES #632 , CLOSES #633 , CLOSES #647
2026-08-02 08:19:28 -04:00
2026-08-01 19:13:03 -06:00
2026-08-01 09:35:24 +02:00
2026-08-03 09:58:53 -03:00
2026-08-03 13:33:07 -03:00
2026-08-03 10:02:17 -03:00
2026-08-03 10:02:17 -03:00
CLOSES #339 , CLOSES #354 , CLOSES #360 , CLOSES #372 , CLOSES #373 , CLOSES #374 , CLOSES #375 , CLOSES #378 , CLOSES #379 , CLOSES #383 , CLOSES #384 , CLOSES #385 , CLOSES #391 , CLOSES #392 , CLOSES #393 , CLOSES #394 , CLOSES #395 , CLOSES #396 , CLOSES #397 , CLOSES #398 , CLOSES #413 , CLOSES #420 , CLOSES #423 , CLOSES #424 , CLOSES #425 , CLOSES #426 , CLOSES #427 , CLOSES #429 , CLOSES #430 , CLOSES #431 , CLOSES #433 , CLOSES #435 , CLOSES #436 , CLOSES #438 , CLOSES #439 , CLOSES #441 , CLOSES #442 , CLOSES #444
2026-07-30 11:14:51 -04:00
CLOSES #455 , CLOSES #487 , CLOSES #501 , CLOSES #540 , CLOSES #585 , CLOSES #591 , CLOSES #593 , CLOSES #595 , CLOSES #597 , CLOSES #599 , CLOSES #600 , CLOSES #606 , CLOSES #607 , CLOSES #610 , CLOSES #613 , CLOSES #616 , CLOSES #620 , CLOSES #626 , CLOSES #632 , CLOSES #633 , CLOSES #647
2026-08-02 08:19:28 -04:00
CLOSES #604 , CLOSES #666 , CLOSES #716 , CLOSES #727 , CLOSES #763 , CLOSES #781 , CLOSES #784 , CLOSES #799 , CLOSES #801 , CLOSES #810 , CLOSES #828 , CLOSES #834 , CLOSES #838 , CLOSES #849 , CLOSES #852 , CLOSES #857 , CLOSES #863 , CLOSES #864 , CLOSES #867 , CLOSES #869 , CLOSES #870 , CLOSES #872 , CLOSES #839
2026-08-05 16:36:37 -04:00
2026-08-03 11:52:48 -04:00
CLOSES #604 , CLOSES #666 , CLOSES #716 , CLOSES #727 , CLOSES #763 , CLOSES #781 , CLOSES #784 , CLOSES #799 , CLOSES #801 , CLOSES #810 , CLOSES #828 , CLOSES #834 , CLOSES #838 , CLOSES #849 , CLOSES #852 , CLOSES #857 , CLOSES #863 , CLOSES #864 , CLOSES #867 , CLOSES #869 , CLOSES #870 , CLOSES #872 , CLOSES #839
2026-08-05 16:36:37 -04:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
2026-08-05 00:50:35 +02:00
2026-08-06 14:36:01 -04:00
2026-08-06 14:36:01 -04:00
2026-07-28 09:25:55 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
2026-08-03 17:19:53 +01:00
2026-08-03 15:01:58 -03:00
CLOSES #339 , CLOSES #354 , CLOSES #360 , CLOSES #372 , CLOSES #373 , CLOSES #374 , CLOSES #375 , CLOSES #378 , CLOSES #379 , CLOSES #383 , CLOSES #384 , CLOSES #385 , CLOSES #391 , CLOSES #392 , CLOSES #393 , CLOSES #394 , CLOSES #395 , CLOSES #396 , CLOSES #397 , CLOSES #398 , CLOSES #413 , CLOSES #420 , CLOSES #423 , CLOSES #424 , CLOSES #425 , CLOSES #426 , CLOSES #427 , CLOSES #429 , CLOSES #430 , CLOSES #431 , CLOSES #433 , CLOSES #435 , CLOSES #436 , CLOSES #438 , CLOSES #439 , CLOSES #441 , CLOSES #442 , CLOSES #444
2026-07-30 11:14:51 -04:00
CLOSES #339 , CLOSES #354 , CLOSES #360 , CLOSES #372 , CLOSES #373 , CLOSES #374 , CLOSES #375 , CLOSES #378 , CLOSES #379 , CLOSES #383 , CLOSES #384 , CLOSES #385 , CLOSES #391 , CLOSES #392 , CLOSES #393 , CLOSES #394 , CLOSES #395 , CLOSES #396 , CLOSES #397 , CLOSES #398 , CLOSES #413 , CLOSES #420 , CLOSES #423 , CLOSES #424 , CLOSES #425 , CLOSES #426 , CLOSES #427 , CLOSES #429 , CLOSES #430 , CLOSES #431 , CLOSES #433 , CLOSES #435 , CLOSES #436 , CLOSES #438 , CLOSES #439 , CLOSES #441 , CLOSES #442 , CLOSES #444
2026-07-30 11:14:51 -04:00
2026-08-04 10:32:51 -04:00
2026-08-01 15:52:34 -06:00
2026-08-04 15:20:06 +02:00
2026-07-31 10:45:12 -04:00
2026-07-28 13:33:53 -07:00
2026-08-03 16:46:48 -03:00
CLOSES #455 , CLOSES #487 , CLOSES #501 , CLOSES #540 , CLOSES #585 , CLOSES #591 , CLOSES #593 , CLOSES #595 , CLOSES #597 , CLOSES #599 , CLOSES #600 , CLOSES #606 , CLOSES #607 , CLOSES #610 , CLOSES #613 , CLOSES #616 , CLOSES #620 , CLOSES #626 , CLOSES #632 , CLOSES #633 , CLOSES #647
2026-08-02 08:19:28 -04:00
2026-07-25 15:21:49 -04:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
2026-08-04 09:43:01 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
2026-08-04 15:17:09 -04:00
2026-08-02 10:54:04 -06:00
2026-07-28 06:16:21 -04:00
2026-07-28 06:16:21 -04:00
2026-08-06 15:15:07 +01:00
2026-08-04 15:36:35 +01:00
CLOSES #644 , CLOSES #703 , CLOSES #726 , CLOSES #737 , CLOSES #750 , CLOSES #752 , CLOSES #764 , CLOSES #765 , CLOSES #768 , CLOSES #773 , CLOSES #774 , CLOSES #775 , CLOSES #777 , CLOSES #780 , CLOSES #782
2026-08-04 09:25:28 -04:00
CLOSES #339 , CLOSES #354 , CLOSES #360 , CLOSES #372 , CLOSES #373 , CLOSES #374 , CLOSES #375 , CLOSES #378 , CLOSES #379 , CLOSES #383 , CLOSES #384 , CLOSES #385 , CLOSES #391 , CLOSES #392 , CLOSES #393 , CLOSES #394 , CLOSES #395 , CLOSES #396 , CLOSES #397 , CLOSES #398 , CLOSES #413 , CLOSES #420 , CLOSES #423 , CLOSES #424 , CLOSES #425 , CLOSES #426 , CLOSES #427 , CLOSES #429 , CLOSES #430 , CLOSES #431 , CLOSES #433 , CLOSES #435 , CLOSES #436 , CLOSES #438 , CLOSES #439 , CLOSES #441 , CLOSES #442 , CLOSES #444
2026-07-30 11:14:51 -04:00
2026-07-29 13:14:56 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00
CLOSES #415 , CLOSES #484 , CLOSES #488 , CLOSES #492 , CLOSES #497 , CLOSES #541 , CLOSES #559 , CLOSES #562 , CLOSES #563 , CLOSES #564 , CLOSES #565 , CLOSES #566 , CLOSES #567 , CLOSES #568 , CLOSES #569 , CLOSES #570 , CLOSES #571 , CLOSES #572
2026-08-01 08:10:20 -04:00