This release adds 1 notable feature for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
ReleasePort's take
Light signalVersion v4.0.0‑beta.8 delivers extensive refactors across multiple modules, updates linting configuration, and fixes an AI UI localization bug.
Why it matters: Plan code reviews for module refactorings; enable gocyclo with min‑complexity 15 in CI; patch the admin display locale fix before deployment.
Summary
AI summaryRefactor across repo/test, mcp, content, public, admin, app/test, importer, ai modules plus lint config updates and AI UI fix.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Split Complete in OpenAI-compat and Claude providers in ai module. Split Complete in OpenAI-compat and Claude providers in ai module. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Add logo, CI badges, and Ko-fi funding link to README. Add logo, CI badges, and Ko-fi funding link to README. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Bugfix | Medium |
Log silently-discarded errors and drop ineffectual assign. Log silently-discarded errors and drop ineffectual assign. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Enable error-handling linters and resolve findings. Enable error-handling linters and resolve findings. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Stop shadowing built-in min/max/any and close PR-C series. Stop shadowing built-in min/max/any and close PR-C series. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Respect admin display locale in /admin/ai/compose. Respect admin display locale in /admin/ai/compose. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Refactor | Medium |
Introduce golangci-lint config and clean baseline. Introduce golangci-lint config and clean baseline. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Enable five already-clean linters. Enable five already-clean linters. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Enable gocritic and nestif, resolve their findings. Enable gocritic and nestif, resolve their findings. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split three high-complexity functions in rebuild mode. Split three high-complexity functions in rebuild mode. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Enable gocognit, resolve remaining handler findings. Enable gocognit, resolve remaining handler findings. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Enable unparam and trim dead parameters. Enable unparam and trim dead parameters. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Dispatch token() via handler map in dateformat module. Dispatch token() via handler map in dateformat module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split 5 CRUD tests into stage helpers in repo/test. Split 5 CRUD tests into stage helpers in repo/test. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Drop Serve and applyEntryUpdates below gocyclo 15 in mcp module. Drop Serve and applyEntryUpdates below gocyclo 15 in mcp module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split ListView/EntryView Render into helpers in content. Split ListView/EntryView Render into helpers in content. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Drop legacyCGI/comments/list helpers below gocyclo 15 in public. Drop legacyCGI/comments/list helpers below gocyclo 15 in public. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split parsePageForm/parseEntryForm into helpers in admin. Split parsePageForm/parseEntryForm into helpers in admin. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split userUpdate/templateAssetUpload/templateImport by @takkyun in admin module. Split userUpdate/templateAssetUpload/templateImport by @takkyun in admin module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Drop AI / images handlers below gocyclo 15 in admin. Drop AI / images handlers below gocyclo 15 in admin. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split 3 integration scenarios into stage helpers in app/test. Split 3 integration scenarios into stage helpers in app/test. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split 4 over-15 gocyclo tests into stage helpers. Split 4 over-15 gocyclo tests into stage helpers. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split TestImportCopiesFilteredContent in importer/test module. Split TestImportCopiesFilteredContent in importer/test module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split importSB2 and importSB3 by @takkyun in importer module. Split importSB2 and importSB3 by @takkyun in importer module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Split last four gocyclo > 15 functions (misc + boot). Split last four gocyclo > 15 functions (misc + boot). Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Extract entryColumns constant in repo module. Extract entryColumns constant in repo module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Extract column constants for non-entries tables in repo module. Extract column constants for non-entries tables in repo module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Extract column constants for templates and users in repo module. Extract column constants for templates and users in repo module. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Other | Medium |
Enable gocyclo with min-complexity 15. Enable gocyclo with min-complexity 15. Source: llm_adapter@2026-05-21 Confidence: low |
— |
Full changelog
What's Changed
- fix: log silently-discarded errors and drop ineffectual assign by @takkyun in https://github.com/serendipitynz/serenebach/pull/52
- chore: introduce golangci-lint config and clean baseline by @takkyun in https://github.com/serendipitynz/serenebach/pull/53
- chore: enable five already-clean linters by @takkyun in https://github.com/serendipitynz/serenebach/pull/54
- fix: enable error-handling linters and resolve findings by @takkyun in https://github.com/serendipitynz/serenebach/pull/55
- refactor: enable gocritic and nestif, resolve their findings by @takkyun in https://github.com/serendipitynz/serenebach/pull/56
- refactor(rebuild): split three high-complexity functions by @takkyun in https://github.com/serendipitynz/serenebach/pull/57
- refactor: enable gocognit, resolve remaining handler findings by @takkyun in https://github.com/serendipitynz/serenebach/pull/58
- refactor: enable unparam and trim dead parameters by @takkyun in https://github.com/serendipitynz/serenebach/pull/59
- fix: stop shadowing built-in min/max/any and close PR-C series by @takkyun in https://github.com/serendipitynz/serenebach/pull/60
- refactor(dateformat): dispatch token() via handler map by @takkyun in https://github.com/serendipitynz/serenebach/pull/61
- refactor(repo/test): split 5 CRUD tests into stage helpers by @takkyun in https://github.com/serendipitynz/serenebach/pull/62
- refactor(mcp): drop Serve and applyEntryUpdates below gocyclo 15 by @takkyun in https://github.com/serendipitynz/serenebach/pull/63
- refactor(content): split ListView/EntryView Render into helpers by @takkyun in https://github.com/serendipitynz/serenebach/pull/64
- refactor(public): drop legacyCGI/comments/list helpers below gocyclo 15 by @takkyun in https://github.com/serendipitynz/serenebach/pull/65
- refactor(admin): split parsePageForm/parseEntryForm into helpers by @takkyun in https://github.com/serendipitynz/serenebach/pull/66
- refactor(admin): split userUpdate/templateAssetUpload/templateImport by @takkyun in https://github.com/serendipitynz/serenebach/pull/67
- refactor(admin): drop AI / images handlers below gocyclo 15 by @takkyun in https://github.com/serendipitynz/serenebach/pull/68
- refactor(app/test): split 3 integration scenarios into stage helpers by @takkyun in https://github.com/serendipitynz/serenebach/pull/69
- refactor(test): split 4 over-15 gocyclo tests into stage helpers by @takkyun in https://github.com/serendipitynz/serenebach/pull/70
- refactor(importer/test): split TestImportCopiesFilteredContent by @takkyun in https://github.com/serendipitynz/serenebach/pull/71
- refactor(ai): split Complete in OpenAI-compat and Claude providers by @takkyun in https://github.com/serendipitynz/serenebach/pull/72
- refactor(importer): split importSB2 and importSB3 by @takkyun in https://github.com/serendipitynz/serenebach/pull/73
- refactor: split last four gocyclo > 15 functions (misc + boot) by @takkyun in https://github.com/serendipitynz/serenebach/pull/74
- chore(lint): enable gocyclo with min-complexity 15 by @takkyun in https://github.com/serendipitynz/serenebach/pull/75
- refactor(repo): extract entryColumns constant by @takkyun in https://github.com/serendipitynz/serenebach/pull/76
- refactor(repo): extract column constants for non-entries tables by @takkyun in https://github.com/serendipitynz/serenebach/pull/77
- refactor(repo): extract column constants for templates and users by @takkyun in https://github.com/serendipitynz/serenebach/pull/78
- fix(ai): respect admin display locale in /admin/ai/compose by @takkyun in https://github.com/serendipitynz/serenebach/pull/79
- Add logo, CI badges, and Ko-fi funding link to README by @takkyun in https://github.com/serendipitynz/serenebach/pull/80
Full Changelog: https://github.com/serendipitynz/serenebach/compare/v4.0.0-beta.7...v4.0.0-beta.8
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Serene Bach
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]