CC-12: Publish to Sonatype with separate ox and cats-effect artifacts #18

Merged
mprihoda merged 26 commits from CC-12 into main 2026-04-02 17:47:20 +00:00
mprihoda commented 2026-04-02 13:57:22 +00:00 (Migrated from github.com)

Summary

  • Migrate build from Scala CLI to Mill with three modules: core, direct, effectful
  • Separate artifacts so users only pull dependencies they need (no cats-effect for Ox users, no ox for cats-effect users)
  • Publish to Maven Central via Sonatype Central with GitHub Actions CI workflow
  • Version 0.1.0 — first published release

Architecture

core (circe only)
├── direct (core + os-lib + ox)
└── effectful (core + cats-effect + fs2 + log4cats)

Phases Completed

  1. Build Infrastructurebuild.mill, .mill-version, Mill launcher
  2. Source Reorganization — Files moved to Mill layout, deleted duplicate model.scala and facade ClaudeCode.scala
  3. Publishing ConfigurationartifactName prefixing, publish.yml workflow, version 0.1.0
  4. Verification — Dependency tree verification, ARCHITECTURE.md, README.md updates

Breaking Changes

  • Top-level works.iterative.claude.ClaudeCode facade removed → use works.iterative.claude.effectful.ClaudeCode
  • Top-level works.iterative.claude.model types removed → use works.iterative.claude.core.model
  • Build tool changed from Scala CLI to Mill

Test plan

  • All 397 tests pass (./mill __.test)
  • Each module compiles independently
  • publishLocal produces correct artifacts with isolated dependency trees
  • core POM: only circe (no ox, no cats-effect)
  • direct POM: core + os-lib + ox (no cats-effect)
  • effectful POM: core + cats-effect + fs2 + log4cats (no ox)
  • GitHub Actions publish workflow validated
  • Manual: Tag v0.1.0 and verify Maven Central publish

Artifacts

🤖 Generated with Claude Code

## Summary - **Migrate build** from Scala CLI to Mill with three modules: `core`, `direct`, `effectful` - **Separate artifacts** so users only pull dependencies they need (no cats-effect for Ox users, no ox for cats-effect users) - **Publish to Maven Central** via Sonatype Central with GitHub Actions CI workflow - **Version 0.1.0** — first published release ## Architecture ``` core (circe only) ├── direct (core + os-lib + ox) └── effectful (core + cats-effect + fs2 + log4cats) ``` ## Phases Completed 1. **Build Infrastructure** — `build.mill`, `.mill-version`, Mill launcher 2. **Source Reorganization** — Files moved to Mill layout, deleted duplicate `model.scala` and facade `ClaudeCode.scala` 3. **Publishing Configuration** — `artifactName` prefixing, `publish.yml` workflow, version 0.1.0 4. **Verification** — Dependency tree verification, `ARCHITECTURE.md`, `README.md` updates ## Breaking Changes - Top-level `works.iterative.claude.ClaudeCode` facade removed → use `works.iterative.claude.effectful.ClaudeCode` - Top-level `works.iterative.claude.model` types removed → use `works.iterative.claude.core.model` - Build tool changed from Scala CLI to Mill ## Test plan - [x] All 397 tests pass (`./mill __.test`) - [x] Each module compiles independently - [x] `publishLocal` produces correct artifacts with isolated dependency trees - [x] `core` POM: only circe (no ox, no cats-effect) - [x] `direct` POM: core + os-lib + ox (no cats-effect) - [x] `effectful` POM: core + cats-effect + fs2 + log4cats (no ox) - [x] GitHub Actions publish workflow validated - [ ] Manual: Tag v0.1.0 and verify Maven Central publish ## Artifacts - [Review Packet](project-management/issues/CC-12/review-packet.md) - [Implementation Log](project-management/issues/CC-12/implementation-log.md) - [Release Notes](project-management/issues/CC-12/release-notes.md) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
iterative-works/claude-code-query!18
No description provided.