Skip to content

Commit fb60624

Browse files
committed
docs: update CHANGELOG for v2.3.0 release
Include all changes since v2.2.0: frontend design system, color palette unification, theme presets, mobile-first CSS, CLI hardening, security fixes, and test coverage improvements.
1 parent bbbdd68 commit fb60624

1 file changed

Lines changed: 28 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111

1212
## [2.3.0] - 2026-02-04
1313

14-
### Fixed
15-
16-
- **YAML injection in article creation**: `SanitizeForYAML()` now escapes backslashes and newlines; frontmatter templates pass title, description, and author through sanitization
17-
- **Destructive static export**: Replaced `os.RemoveAll` with safe directory swap pattern (export to `.tmp`, rename on success, preserve original on failure)
18-
- **Cache race condition**: Counter increments (`hits`, `misses`) now use `atomic.AddInt64` instead of mutating under `RLock`
19-
- **Cache goroutine leak**: Cleanup goroutine now stops cleanly via `stopCh` channel, signaled by `Shutdown()`
20-
2114
### Added
2215

23-
- **Article repository tests** (`internal/services/article/repository_test.go`): LoadAll, GetBySlug, GetByTag, GetByCategory, slug generation, reading time
24-
- **Search service tests** (`internal/services/article/search_test.go`): Basic search, scoring, filters, suggestions, stop words
25-
- **Cache coordinator tests** (`internal/services/article/cache_test.go`): CRUD, concurrent access with race detector, shutdown cleanup
26-
- **Content processor tests** (`internal/services/article/content_test.go`): Markdown processing, excerpts, duplicate titles, image/link extraction
27-
- **CI lint step**: golangci-lint now runs in CI with `only-new-issues: true`
16+
- **BLOG_TAGLINE config**: Concise navbar branding separate from full blog description
17+
- **Mobile-first CSS architecture**: Complete design system with CSS custom properties, breakpoints at 481px/769px/1025px
18+
- **Theme system**: Independent light/dark mode toggle and color presets (default, ocean, forest, sunset, berry)
19+
- **FOUC prevention**: Inline script in `<head>` reads localStorage before render
20+
- **Article repository tests** (`repository_test.go`): LoadAll, GetBySlug, GetByTag, GetByCategory, slug generation, reading time
21+
- **Search service tests** (`search_test.go`): Basic search, scoring, filters, suggestions, stop words
22+
- **Cache coordinator tests** (`cache_test.go`): CRUD, concurrent access with race detector, shutdown cleanup
23+
- **Content processor tests** (`content_test.go`): Markdown processing, excerpts, duplicate titles, image/link extraction
24+
- **CI lint step**: golangci-lint in CI with `only-new-issues: true`
2825
- **CI coverage threshold**: Build fails if coverage drops below 45%
2926

3027
### Changed
3128

29+
- **Unified color palette**: Replaced amber accent and rainbow gradients with restrained monochrome system — accent is now a lighter variant of each theme's primary hue
30+
- **About page sidebar**: 6 hardcoded gradient cards reduced to 1 accent (profile) + 5 neutral cards with borders
31+
- **Social share buttons**: Platform-specific brand colors replaced with `var(--color-primary)` for consistency
32+
- **Tech icons**: Individual brand colors standardized to `var(--color-primary-dark)`
33+
- **Tag cloud**: Filled blue pills changed to outlined style matching article card tags
34+
- **JS showMessage**: Hardcoded hex colors replaced with CSS custom property reads (with fallback values)
35+
- **comments.css**: Aligned to project design token system
3236
- **golangci-lint v1 to v2 migration**: Config schema updated to v2 format, action upgraded to v7 with golangci-lint v2.8.0
3337
- **quic-go updated** to v0.57.0 (resolves CVE)
34-
- **GitHub Actions pinned**: `softprops/action-gh-release` pinned to SHA `a06a81a03ee405af7f2048a818ed3f03bbf83c7b`
35-
- **Documentation accuracy**: Fixed broken links, stale coverage numbers, nonexistent Makefile targets, wrong PORT defaults, and obsolete binary references across all docs
38+
- **GitHub Actions pinned**: `softprops/action-gh-release` pinned to SHA
39+
- **Documentation accuracy**: Fixed broken links, stale coverage numbers, nonexistent Makefile targets, wrong PORT defaults, and obsolete binary references
3640

37-
### Technical Details
41+
### Fixed
3842

39-
- Coverage: ~46.5% (up from ~21%)
40-
- 10 atomic commits
41-
- All quality gates passing: lint, test, test-race, govulncheck
43+
- **YAML injection in article creation**: `SanitizeForYAML()` escapes backslashes and newlines
44+
- **Destructive static export**: Replaced `os.RemoveAll` with safe directory swap pattern
45+
- **Cache race condition**: Counter increments now use `atomic.AddInt64` instead of mutating under `RLock`
46+
- **Cache goroutine leak**: Cleanup goroutine stops cleanly via `stopCh` channel
47+
- **Navbar horizontal overflow**: Prevented on mobile viewports
48+
- **Color theme and dark mode separation**: Independent `data-theme` and `data-color-theme` attributes
49+
- **Small-phone spacing**: Restored via `min-width: 481px` breakpoint
50+
- **CLI hardening**: `serve --help`/`--port`, hardened export flags, wired build info
51+
- **CI ldflags**: Aligned with constants package
4252

4353
---
4454

0 commit comments

Comments
 (0)