Building from source and the project layout. For cutting a release, see docs/DELIVERY.md; for context on the project's history, see docs/COWORK.md.
JDK 17+ (needed for jpackage's native distribution packaging -- JDK 11
isn't enough). Only matters for building from source -- the packaged
.msi/.dmg bundles its own JDK, so end users installing those don't
need one.
humane-kotlin is a plain
Maven Central dependency (com.netpress:humane-kotlin, pinned in
build.gradle.kts) -- no sibling checkout needed.
make build # ./gradlew ktlintFormat && ./gradlew build -x test
make test # ./gradlew ktlintFormat && ./gradlew clean test -- verbose, full nested tree
make lint # ./gradlew ktlintCheck
make check # ./gradlew ktlintFormat && ./gradlew clean check -- terse, PASS on success
make package # ./gradlew packageDistributionForCurrentOS -- .dmg on macOS
src/main/kotlin/com/netpress/huck-- model (AppModel), networking (ScanClient), data (ScanEntry), andui/(ContentView,HostEntryView,ScanGridView,ConnectingView).src/test/kotlin/com/netpress/huck-- Kotest specs for the above.docs/COMMENTS.md-- rationale for non-obvious code, organized by file.docs/COWORK.md-- context for picking this project back up cold.docs/DELIVERY.md-- how to cut a release, and why the.msiisn't code-signed yet.docs/releases/<tag>.md-- hand-written release notes, read by.github/workflows/windows-package.ymlon a tagged release..github/workflows/windows-package.yml-- builds a real Windows.msion awindows-latestGitHub Actions runner on every push/PR tomain; on a pushedvX.Y.Ztag, also attaches that.msito a GitHub Release using the matchingdocs/releases/<tag>.mdas the release body.
zouk (Swift) is the feature reference
this should eventually match pixel-for-pixel; see its own docs/COWORK.md
and docs/COMMENTS.md for the source of truth on what the real client does.