fix(skins): ignore subresource load errors - #647
Merged
Conversation
ODevStudio
marked this pull request as ready for review
August 22, 2026 14:07
tadelv
approved these changes
Aug 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
What changed, and why?
subresource fails to load.
an unavailable local skin server, and keep logging every WebView load error.
Change Type (select all)
Scope (select all touched areas)
Linked Issues
Fixes #532
Root Cause (if bug fix)
failed resource, not just a failed main document.
main-frame failures from image, script, font, or other subresource failures.
which must remain a conservative fatal case.
Regression Test Plan (if bug fix or refactor)
simulate=1+ curl/websocat)test/unit/skin_feature/skin_navigation_test.dart.nonfatal; true or unknown main-frame failures retain the full-screen error.
Documentation Obligations (required)
assets/api/rest_v1.ymlorassets/api/websocket_v1.yml(if REST/WebSocket changed)doc/Api.md(if user-facing endpoint changed)doc/Plugins.md(if events/API changed)doc/Skins.md(if skin behavior changed)doc/Profiles.md(if profile handling changed)doc/DeviceManagement.md(if device flows changed)Security Impact (required)
No.No.No.No.No.No.Yes, explain risk and mitigation: N/A.User-Visible Changes
running skin with Decaid's full-screen error view.
Verification
Local gates (run before pushing)
dart format lib test- no remaining candidate changesflutter analyze- cleanflutter test- 3,179 passed, 1 skipped./scripts/fetch_dye2_plugin.sh- not rerun for this local draftManual verification (if applicable)
(API 35), 1920x1200 landscape, mirrored through Android Studio on Windows.
simulate=1):Yes.No, not applicable.an intentionally unreachable HTTPS image. Android logged
HOST_LOOKUPandERR_NAME_NOT_RESOLVED, then completed the main page. Computer Use confirmedthat Streamline stayed visible. A separate run pointed the main frame to an
unused local port; Android logged
CANNOT_CONNECT_TO_HOSTand showed theexisting full-screen WebView error with its Dashboard action.
frame metadata.
DNS outage. The tablet test reproduced the same subresource error class with
a controlled unreachable hostname.
Evidence
Detailed evidence:
localhost:3000main page finishing, and successful API calls before eachlater
HOST_LOOKUPevent. The same interval contains device-wide DNSfailures for
github.comandapi.github.com, ruling out a local serverstartup failure and identifying the fatal event as a subresource failure.
existed and passes for
false,true, and unavailable frame metadata.flutter test test/unit/skin_feature/skin_navigation_test.dart(11 passed)flutter analyze(no issues)flutter testwith the package-matched QuickJS DLL onPATHand temporaryLF normalization for the line-ending-sensitive AsyncAPI assertion (3,179
passed, 1 skipped)
git diff --cached --checkbefore commit (clean)source built with installed CMake 3.28 and Visual Studio 2022. Computer Use
verified that an intentional subresource DNS failure stays nonfatal after
the failure has settled.
HOST_LOOKUPat 13:55:24, followed by themain page finishing at 13:55:25; Streamline remained fully visible.
CANNOT_CONNECT_TO_HOSTforlocalhost:3999; the full-screen WebView error and Dashboard action appeared.Compatibility & Migration
Yes; only host error presentation changes.No.No.Risks & Mitigations
explicit or indeterminate main-frame failures.
Contributor Responsibility
AI-assisted development is allowed. The submitter remains responsible for the submitted work.