{"record":{"id":"5a68fd2f0066eb2d","repo":"HMCL-dev/HMCL","slug":"unsupported-theme-brightness","errorCode":null,"errorMessage":"Unsupported theme brightness: ","messagePattern":"Unsupported theme brightness: ","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"HMCL/src/main/java/org/jackhuang/hmcl/theme/ThemeAppearance.java","lineNumber":378,"sourceCode":"        if (contrast.equals(Contrast.LOW)) {\n            object.addProperty(FIELD_CONTRAST, \"low\");\n        } else if (contrast.equals(Contrast.DEFAULT)) {\n            object.addProperty(FIELD_CONTRAST, \"standard\");\n        } else if (contrast.equals(Contrast.MEDIUM)) {\n            object.addProperty(FIELD_CONTRAST, \"medium\");\n        } else if (contrast.equals(Contrast.HIGH)) {\n            object.addProperty(FIELD_CONTRAST, \"high\");\n        } else {\n            object.addProperty(FIELD_CONTRAST, contrast.getValue());\n        }\n    }\n\n    /// Parses a serialized theme brightness value.\n    private static Brightness parseBrightness(String value) {\n        return switch (value.trim().toLowerCase(Locale.ROOT)) {\n            case \"light\" -> Brightness.LIGHT;\n            case \"dark\" -> Brightness.DARK;\n            default -> throw new IllegalArgumentException(\"Unsupported theme brightness: \" + value);\n        };\n    }\n\n    /// Converts a controlled brightness value to its canonical JSON string.\n    private static String toJsonBrightness(Brightness brightness) {\n        return switch (brightness) {\n            case LIGHT -> \"light\";\n            case DARK -> \"dark\";\n        };\n    }\n}\n","sourceCodeStart":360,"sourceCodeEnd":390,"githubUrl":"https://github.com/HMCL-dev/HMCL/blob/24702dc5a0214034f4c27166d5fd30cad08cec19/HMCL/src/main/java/org/jackhuang/hmcl/theme/ThemeAppearance.java#L360-L390","documentation":"Raised in parseBrightness() (called from readBrightness) when the serialized brightness string in the theme manifest does not match any known brightness token (e.g. dark/light or a recognized level name). Only enumerated brightness names are accepted; an arbitrary or misspelled token is rejected. The input at fault is the brightness field's string value.","triggerScenarios":"Thrown at HMCL/src/main/java/org/jackhuang/hmcl/theme/ThemeAppearance.java:378 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use one of the supported brightness tokens (e.g. \"dark\", \"light\") in the theme manifest.","Fix the typo or casing of the brightness value so it matches a known token.","Remove the brightness field to fall back to the default brightness."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"24702dc5a0214034f4c27166d5fd30cad08cec19","analyzedAt":"2026-09-10T12:36:46.680Z","contentChangedAt":"2026-09-10T12:36:46.680Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}