Files
amethyst/desktopApp
Claude 08169f8497 refactor(commons): move the napplet wire protocol and scheduled posts to commonMain
Tier 4 of the commons migration sweep: two jvmAndroid groups that were each
pinned by a single JVM API.

Napplet: NappletProtocolJson (and NappletIdentityWatch, NappletRequestRouter,
which only waited on it) used java.util.Base64 and System.currentTimeMillis.
Now kotlin.io.encoding.Base64 and TimeUtils.now(). The decoder uses
PaddingOption.PRESENT_OPTIONAL because java.util.Base64.getDecoder() accepted
unpadded input; a test pins that.

Scheduled posts: ScheduledPostStore was pinned by java.io.File and a POSIX
chmod. It now takes an okio Path + FileSystem (plus a String constructor, the
FileSystemNip95BlobStore shape, so callers need no okio). Owner-only
permissions are a new expect fun restrictFileToOwner: Files.setPosix... on
jvmAndroid, chmod(0600) on iOS. The temp-file swap is FileSystem.atomicMove,
which replaces an existing target everywhere, so the rename/delete/rename
fallback is gone. The work gate, publisher and notifier came along.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UjQQN9CgWHVtNCSWqnKoqY
2026-09-26 21:12:49 +00:00
..