Skip to content

2.0: Gradle + GitHub Actions, new API, no dependencies - #2

Merged
sanyarnd merged 3 commits into
masterfrom
claude/epic-turing-j666fo
Oct 8, 2026
Merged

sanyarnd merged 3 commits into
masterfrom
claude/epic-turing-j666fo

Conversation

@sanyarnd

@sanyarnd sanyarnd commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Infrastructure (based on sanyarnd/applocker)

  • Gradle 9.8.1 + version catalog, Java 11 bytecode (release = 11), JDK 25 toolchain
  • Error Prone + NullAway (JSpecify @NullMarked), Spotless + palantir-java-format, -Xlint:all -Werror, strict javadoc
  • JUnit 6, Mockito, Instancio, AssertJ, JaCoCo
  • GitHub Actions: build.yml (ubuntu/windows/macos matrix + publishToMavenLocal check + aggregate Build job), release.yml (tag X.Y.Z → Maven Central + GitHub Packages + GitHub release), pages.yml, Dependabot
  • Removed Maven, Travis CI, Checkstyle, Bintray

API (2.0)

  • No runtime dependencies: jna-platform removed. Windows directories come from the environment (APPDATA, LOCALAPPDATA, …) and from the User Shell Folders registry key read via reg.exe (once per JVM), so moved folders are supported
  • All methods return Optional<Path>; NoSuchPathException removed
  • StandardPaths.forApp("name") → AppPaths with cache/config/data/dataLocal/state/runtime (on Windows: %LOCALAPPDATA%\name\cache, %APPDATA%\name\config, …)
  • New locations: state(), runtime(), templates(), publicShare()
  • Windows: config() → %APPDATA% (Roaming)

Fixes

  • macOS support (previously ExceptionInInitializerError); XDG implementation for other Unix-like systems
  • darwin was detected as Windows
  • Linux: user-dirs.dirs is read, relative XDG_* values are ignored, $TMPDIR is respected, no relative ~
  • Windows: "nullnull" home fallback

467 tests locally, ~92% coverage (the rest is the real reg.exe call, which is tested on the Windows runner).

Before the first release

Secrets in the release environment: MAVEN_CENTRAL_USERNAME, MAVEN_CENTRAL_PASSWORD, GPG_PRIVATE_KEY, GPG_KEY_PASSPHRASE; the io.github.sanyarnd namespace must be verified in the Central Portal.

@sanyarnd sanyarnd changed the title Migrate to Gradle + GitHub Actions, fix path resolution 2.0: Gradle + GitHub Actions, new API, no dependencies Oct 8, 2026
Infrastructure (based on sanyarnd/applocker):
- Gradle 9 with version catalog, Java 11 bytecode built with JDK 25 toolchain
- Error Prone + NullAway, Spotless with palantir-java-format, -Werror
- JUnit 6, Mockito, Instancio, AssertJ, JaCoCo
- GitHub Actions: build on Linux/Windows/macOS, publication check,
  release to Maven Central and GitHub Packages, GitHub Pages
- Remove Maven wrapper, Travis CI, Checkstyle and Bintray configuration

Fixes:
- Implement macOS locations, use XDG implementation for other Unix-likes
- Read Linux user directories from user-dirs.dirs
- Ignore relative XDG values, respect TMPDIR, no relative "~" home
- Windows: use Shell32Util/FOLDERID_Profile, drop userenv binding and
  manual native memory reading, fix "nullnull" home fallback
- Darwin is no longer detected as Windows
- Lazy delegate initialization in StandardPaths
- Remove jna-platform: Windows directories come from the environment
  and the User Shell Folders registry key (reg.exe, queried once)
- All methods return Optional<Path>, NoSuchPathException is removed
- StandardPaths.forApp(name) returns AppPaths with cache/config/data/
  dataLocal/state/runtime application directories
- New locations: state, runtime, templates, publicShare
- Windows: config() is the roaming directory
@sanyarnd
sanyarnd force-pushed the claude/epic-turing-j666fo branch from d776b04 to 6f45b93 Compare October 8, 2026 21:44
@sanyarnd
sanyarnd merged commit c016293 into master Oct 8, 2026
5 checks passed
@sanyarnd
sanyarnd deleted the claude/epic-turing-j666fo branch October 8, 2026 21:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant