- 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>
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>
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>
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>
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>
- 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>
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>
- 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>