9 Commits

Author SHA1 Message Date
k3nny d790a9edfe feat(notify): release v1.8.0 — Slack/Teams/Google Chat/Telegram/webhook notifications
ci / vet, staticcheck, test, build (push) Successful in 4m10s
docs / Build and deploy docs (push) Failing after 10s
release / Build and publish release (push) Successful in 5m9s
- Add internal/notify package: best-effort release notifications to Slack, Microsoft Teams, Google Chat, Telegram, and a generic JSON webhook; every target is independently opt-in and a failed notification never fails the release
- Add notify config section (slack_webhook_url, teams_webhook_url, google_chat_webhook_url, telegram_bot_token/telegram_chat_id, webhook_url) with matching env var fallbacks; 100% coverage plus FuzzMessagePayloads
- Wire notification sending into run() — fires after tag+push (including --no-release), skipped on --no-push/--no-commit since nothing was published yet
- Document the notify section in README, Hugo docs, and .releaser.yml template; update CLAUDE.md architecture/fuzzing tables
- Also commit the Apache License 2.0 docs-site footer link (docs/hugo.toml geekdocContentLicense), left uncommitted from a prior change

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-12 13:55:57 +02:00
k3nny a14c3f1181 feat(pyproject): release v1.7.0 — Python pyproject.toml version bump
ci / vet, staticcheck, test, build (push) Successful in 3m2s
docs / Build and deploy docs (push) Failing after 13s
release / Build and publish release (push) Successful in 4m29s
Add internal/pyproject package with ReadVersion and WriteVersion for
pyproject.toml files. Reads [project].version (PEP 621) first, then
falls back to [tool.poetry].version. Section boundaries are detected
via TOML's rule that headers always start at the beginning of a line
(\n[ pattern), so inline arrays with [ characters don't interfere.

Config follows the established multi-value pattern:
- python.pyproject_toml: single path (opt-in, no default)
- python.pyproject_tomls: list for monorepos (overrides single)
- --pyproject flag overrides pyproject_toml and clears pyproject_tomls

100% per-package statement coverage maintained across all 14 packages;
FuzzReadVersion and FuzzWriteVersion added per fuzzing guidelines.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-12 00:22:49 +02:00
k3nny c1ecd947ac docs(releaser): fix Geekdoc edit path — content/ was duplicated
ci / vet, staticcheck, test, build (push) Successful in 3m3s
docs / Build and deploy docs (push) Failing after 17s
Geekdoc sets geekdocFilePath to the file path relative to the Hugo
working dir (docs/), so it already begins with content/. The previous
value "docs/content" caused the join to produce docs/content/content/.
Corrected to "_edit/main/docs".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-12 00:01:29 +02:00
k3nny 712abe3c9d docs(releaser): fix Geekdoc edit link for Gitea
ci / vet, staticcheck, test, build (push) Successful in 3m37s
docs / Build and deploy docs (push) Failing after 15s
Gitea uses /_edit/ instead of /edit/ in its file editor URLs. Change
geekdocEditPath from "edit/main/docs/content" to "_edit/main/docs/content"
so the "Edit this page" links resolve correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-11 23:59:32 +02:00
k3nny d053faeb23 docs(releaser): fix repo URLs and add repository link
ci / vet, staticcheck, test, build (push) Successful in 4m34s
docs / Build and deploy docs (push) Failing after 12s
All git.k3nny.fr/releaser links were missing the /k3nny/ namespace.
Fixed in docs/hugo.toml (geekdocRepo + geekdocEditPath), installation,
ci-integration, and changelog pages. Also added repo link to the docs
home page and README.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-11 23:57:02 +02:00
k3nny 4f0592e342 docs(releaser): add logo to documentation site and README
ci / vet, staticcheck, test, build (push) Successful in 3m11s
docs / Build and deploy docs (push) Failing after 15s
- docs/hugo.toml: set geekdocLogo to images/releaser-logo-1024.png so
  Geekdoc renders it in the site header
- docs/static/images/releaser-logo-128.png: 128×128 version resized from
  the 1024×1024 source via ImageMagick for README display
- README.md: add logo above the release badge
- .gitignore: scope releaser-* to repo root (/releaser-*) so it no
  longer matches files inside docs/static/images/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-11 23:31:23 +02:00
k3nny 232a0eb903 docs(releaser): restore docs URL lost in merge to main
ci / vet, staticcheck, test, build (push) Failing after 10s
docs / Build and deploy docs (push) Failing after 17s
Re-apply two changes that were dropped when release/1.0 was merged into
main via Gitea:
- README.md: Documentation link to https://releaser.k3nny.fr
- docs/hugo.toml: baseURL set to https://releaser.k3nny.fr/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-11 22:59:28 +02:00
k3nny dfdf2b019a feat(gradle): release v1.6.0 — Gradle build file version bump
ci / vet, staticcheck, test, build (push) Failing after 3m1s
release / Build and publish release (push) Successful in 5m1s
Add internal/gradle package with ReadVersion and WriteVersion for
build.gradle (Groovy DSL, single-quoted) and build.gradle.kts (Kotlin
DSL, double-quoted). Quote style is preserved on write. regexp.QuoteMeta
ensures version strings with dots or special characters are safe.

Config follows the established multi-value pattern:
- gradle.build_file: single path (opt-in, no default)
- gradle.build_files: list for multi-module projects (overrides build_file)
- --gradle flag overrides build_file and clears build_files

100% per-package statement coverage maintained across all 13 packages;
FuzzReadVersion and FuzzWriteVersion added per fuzzing guidelines.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-11 17:59:13 +02:00
k3nny e2d4214405 docs(releaser): release v1.5.1 — documentation site, fuzzing completeness
ci / vet, staticcheck, test, build (push) Failing after 3m50s
- Add Hugo + Geekdoc documentation site (docs/): installation, CLI
  reference, configuration, CI integration, and changelog pages; explicit
  menu bundle nav so all pages appear in the sidebar on every page
- Add Gitea CI workflow (.gitea/workflows/docs.yml): builds on push to
  main when docs/** changes, deploys minified site to gh-pages branch
- Add docs:setup / docs:serve / docs:build Taskfile tasks; theme bundle
  downloaded at build time (not committed)
- Add FuzzUpdate to internal/changelog and FuzzWriteVersion to
  internal/node to complete fuzz coverage for all file-rewriting packages
- Add fuzzing completeness guidelines to CLAUDE.md: authoritative table,
  exempt-package rationale, seed corpus rules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-11 17:47:26 +02:00