UndocumentedPublicClass and UndocumentedPublicFunction were off, so KDoc
on public API was entirely voluntary and coverage drifted. Turn both on
and grandfather the existing 419 gaps in per-module detekt-baseline.xml
files, which detekt picks up automatically: pre-existing gaps stay
green, any new undocumented public class or function fails the build.
UndocumentedPublicProperty stays off — it reports 7618 hits, 6493 of
them generated constants in sf-symbols and freedesktop-icons.
Also flip config.warningsAsErrors, which governs detekt's own config
validation, so a deprecated or unknown config key fails instead of
warning as detekt is upgraded.
Apply kotlinx binary-compatibility-validator and Kotlin explicitApi() at the
root for every non-example module (same harness as decorated-window-tao).
Commit api/*.api baselines, wire apiCheck into preMerge, and document the
workflow. decorated-window-jewel keeps explicitApi but is skipped by BCV until
ASM can read JVM 25 class files.
Replace compileOnly declarations with implementation or api depending on
whether types are exposed in public API signatures. Core-runtime is now
implementation (transitively provided at runtime). Dependencies appearing
in public method signatures use api scope. Update documentation to reflect
transitive dependency availability.
NativeHttpClient.create() now follows HTTP redirects (NORMAL), fixing 302 errors
when downloading assets from GitHub Releases. The SSL native library is declared
in reachability-metadata for GraalVM native-image builds. Example app updated to
use NativeHttpClient for enterprise/custom certificate support.