Add per-client CHANGELOG.md, maintained by googly.release#6
Merged
Conversation
Each client now ships a CHANGELOG.md, wired into `docs: [extras:]` (so hexdocs shows a CHANGELOG tab) and `package: [files:]` (so it ships in the tarball). The changelog is preserved across regeneration like each client's @Version — it is not clobbered by `mix googly.generate`, which only lays down a baseline for a brand-new client. `mix googly.release` prepends a dated entry on each version bump. Format lives in one place, the new `Googly.Changelog` module. Backfills 0.1.0 (initial release) and 0.1.1 (RFC 6570 {+name} fix, deterministic optional-param ordering, "Google"-prefixed description) for the three existing clients. Regeneration also reconciles the README install line (0.1.0 -> 0.1.1). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a per-client
CHANGELOG.mdto each generated client, surfaced where Hex/Elixir users actually look, and maintained automatically bymix googly.release.docs: [extras: […, "CHANGELOG.md"]]→ hexdocs shows a CHANGELOG tab at the point of install.package: [files: […, "CHANGELOG.md"]]→ the changelog ships inside the published tarball, reproducible with the version.Googly.Changelog(new module) is the single source of truth for the changelog format.How it fits the generator's invariants
The changelog is accumulated history, so it's treated like each client's
@version: it lives in the committed client dir and is preserved across regeneration —mix googly.generatenever clobbers it, it only lays down a baseline for a brand-new client (Changelog.ensure/3).mix googly.releaseprepends a dated entry on each bump (Changelog.add_release/4). It carries no "auto generated" banner, precisely because a human may refine an entry before publishing.Backfill
All three existing clients get:
## 0.1.0— initial release## 0.1.1— RFC 6570{+name}fix, deterministic optional-param ordering, "Google"-prefixed descriptionChanged files
lib/googly/changelog.ex— new module (baseline / prepend / format)lib/googly/generator.ex—write_package_filesensures a baseline changeloglib/googly/generator/renderer.ex—version/1made public for reuselib/mix/tasks/googly.release.ex— bump prepends a dated changelog entrytemplates/client/mix.exs.eex— CHANGELOG inextras+filestest/googly/generator_test.exs— asserts CHANGELOG.md is scaffoldedclients/*/{CHANGELOG.md,mix.exs,README.md}— regenerated output + backfillNot included (by design)
specifications/gdd/*.jsonis gitignored, so there's no committed prior surface to diff against. Release entries use a generic default note you edit before committing. Adding a per-client surface manifest to diff against is a possible follow-up.Testing
mix test→ 60 passedmix compile --force --warnings-as-errors(CloudStorage) cleanmix formatclean~> 0.1.0→0.1.1)mix googly.release CloudStorage: bumped0.1.1 → 0.1.2and prepended## 0.1.2above preserved history, then restored the files