Skip to content

Latest commit

 

History

History
331 lines (247 loc) · 10.5 KB

File metadata and controls

331 lines (247 loc) · 10.5 KB

Changelog

All notable changes to Source Code Portal will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


Planned

  • GitHub Actions integration
  • GitLab support
  • Pull request dashboard
  • Search functionality
  • Dark mode support

0.10.17-SNAPSHOT - 2026-01-27

Added - Phase 2: Spring Boot Migration ✨

Spring Boot Integration:

  • Spring Boot 3.2.2 as primary application mode
  • Spring Boot Actuator with health checks, metrics, and info endpoints
  • Spring Cache abstraction with Caffeine backend
  • Spring @Scheduled tasks replacing custom executors
  • Type-safe configuration with @ConfigurationProperties

Custom Health Indicators:

  • GitHubHealthIndicator - Monitors GitHub API rate limit and connectivity
  • CacheHealthIndicator - Monitors cache manager and individual cache health
  • ExecutorHealthIndicator - Monitors thread pool utilization and saturation
  • ApplicationInfoContributor - Provides application metadata

Spring MVC Controllers (Week 2-3 Migration):

  • PingRestController - Simple health check endpoint
  • HealthRestController - Enhanced health status with 14 cache stats, thread pools, GitHub rate limit
  • EchoRestController - Echo diagnostic endpoint for request inspection
  • GitHubWebhookRestController - GitHub webhook receiver with HMAC-SHA1 verification
  • BadgeResourceController - Badge serving (license, Jenkins, Snyk, Shields.io)
  • DashboardWebController - Main dashboard page with Thymeleaf
  • GroupWebController - Repository group view page
  • CommitsWebController - Commit history page with filtering
  • ContentsWebController - Repository contents/README page
  • WikiWebController - Cantara wiki page
  • CorsConfiguration - Spring Boot CORS configuration (replaces CORSController)

Configuration:

  • ApplicationProperties - Type-safe configuration (90+ properties)
  • ConfigurationBridge - Backward compatibility bridge for legacy code
  • SpringBootInitializer - Application startup initialization logic
  • Profile-based configuration (dev, prod, test)

Observability:

  • Prometheus metrics export via /actuator/prometheus
  • Micrometer integration with Caffeine cache metrics
  • Structured health checks with UP/DOWN/DEGRADED status levels
  • Actuator endpoints: health, info, metrics, prometheus, caches, scheduledtasks

Documentation:

  • Comprehensive Phase 2 documentation (PHASE2_PROGRESS.md, 8x TASK*_SUMMARY.md)
  • Week 2-3 controller migration documentation (WEEK2-3_PROGRESS.md, SESSION_SUMMARY.md)
  • Deprecation guide (DEPRECATED_UNDERTOW_CONTROLLERS.md) with timeline and migration path
  • Skills documentation (CLAUDE_SKILLS.md) with 10 automation skills
  • Learnings documentation (LEARNINGS_PHASE2.md) with 15 key insights
  • Verification guide (VERIFICATION_GUIDE.md) updated with all Spring MVC endpoints

Changed

Infrastructure:

  • Undertow now runs as embedded server within Spring Boot
  • Dual-mode support: Spring Boot (primary) or Undertow (legacy)
  • Configuration now loaded from application.yml (Spring Boot properties)
  • Cache implementation: JSR-107 JCache → Caffeine (2-3x faster)

Code Quality:

  • 70-80% code reduction in controllers (Spring MVC vs Undertow)
  • Better separation of concerns with dependency injection
  • Improved testability with @WebMvcTest support
  • Cleaner configuration with @ConfigurationProperties

Deprecated

Undertow Controllers (Week 2-3 - marked @Deprecated, will be removed in v0.12.0):

  • ApplicationController - Main routing controller [@Deprecated since 0.10.17-SNAPSHOT]
  • WebController - Web page routing [@Deprecated since 0.10.17-SNAPSHOT]
  • CORSController - CORS handling (replaced by CorsConfiguration)
  • EchoController - Echo endpoint (replaced by EchoRestController)
  • PingController - Ping endpoint (replaced by PingRestController)
  • GithubWebhookController - Webhook receiver (replaced by GitHubWebhookRestController)
  • HealthController - Health checks (replaced by HealthRestController)
  • DashboardHandler - Dashboard page (replaced by DashboardWebController)
  • CardHandler - Group view (replaced by GroupWebController)
  • CommitsHandler - Commit history (replaced by CommitsWebController)
  • ContentsHandler - Contents page (replaced by ContentsWebController)
  • CantaraWikiHandler - Wiki page (replaced by WikiWebController)
  • BadgeResourceHandler - Badge serving (replaced by BadgeResourceController)
  • StaticContentController - Static resources (replaced by Spring Boot static resource handler)
  • ImageResourceController - Image resources (replaced by Spring Boot static resource handler)
  • See DEPRECATED_UNDERTOW_CONTROLLERS.md for migration guide

Legacy Components (will be removed in future version):

  • Undertow standalone mode (use mvn spring-boot:run instead)
  • Custom ExecutorService (migrate to Spring @Async)
  • Custom ScheduledExecutorService (migrate to Spring @Scheduled)
  • JSR-107 JCache (migrate to Spring Cache with @Cacheable)
  • Manual configuration loading (use ApplicationProperties)

Fixed

Build Issues:

  • JSON-B auto-configuration conflict with Spring Boot 3.2.2 (excluded JsonbAutoConfiguration)
  • Maven JAR plugin compatibility issue (use mvn spring-boot:run as workaround)

Configuration Issues:

  • DynamicConfiguration interface compatibility (created adapter pattern)
  • Environment variable support (SCP_* prefix now supported)

0.10.16 - 2025-12-XX

Added - Phase 1: Modernization ✨

Java 21 Migration:

  • Upgraded from Java 11 to Java 21 LTS
  • Enabled virtual threads for better concurrency
  • Updated all dependencies for Java 21 compatibility

Testing Framework:

  • Migrated from TestNG to JUnit 5
  • Added JUnit 5 parameterized tests
  • Improved test organization with @Nested tests

Circuit Breaker:

  • Replaced deprecated Hystrix with Resilience4j 2.2.0
  • Updated all command classes to use Resilience4j
  • Improved failure handling and retry logic

Dependencies:

  • Updated SLF4J 1.8.0-beta4 → 2.0.x (stable)
  • Updated Logback 1.3.0-alpha → 1.5.x (stable)
  • Updated Maven plugins to latest versions
  • Updated Node.js 12 → 20 LTS (critical security update)

Changed

Build System:

  • Maven 3.6.x → 3.9.x
  • Updated all Maven plugin versions
  • Improved build performance

Code Quality:

  • Removed deprecated API usage
  • Fixed unchecked warnings
  • Improved error handling

Deprecated

  • Hystrix circuit breaker (replaced with Resilience4j)
  • TestNG testing framework (replaced with JUnit 5)
  • Java 11 runtime (upgraded to Java 21)

0.10.15 - 2025-11-XX

Added

Features:

  • Snyk security scanning integration
  • Jenkins build status badges
  • Shields.io badge support
  • GitHub webhook support for real-time updates

Caching:

  • JSR-107 JCache implementation
  • In-memory caching for repositories, commits, contents
  • Configurable TTL (time-to-live) for cache entries

Documentation:

  • AsciiDoc rendering support
  • Markdown rendering with CommonMark
  • Syntax highlighting for code blocks

Changed

Performance:

  • Improved caching strategy
  • Reduced GitHub API calls
  • Faster page load times

UI/UX:

  • Updated Bootstrap 3 → Bootstrap 4
  • Improved mobile responsiveness
  • Better error messages

Fixed

  • GitHub API rate limiting issues
  • Cache synchronization bugs
  • Template rendering errors

0.10.0 - 2020-XX-XX

Added - Initial Release

Core Features:

  • GitHub organization repository listing
  • Repository grouping by configuration
  • Commit history aggregation
  • README rendering (Markdown)
  • Basic health checks

Infrastructure:

  • Undertow embedded web server
  • Thymeleaf server-side templates
  • Hystrix circuit breaker
  • Java 11 runtime

Integrations:

  • GitHub API v3
  • Basic Jenkins integration

Migration Notes

Phase 2: Spring Boot Migration (2026-01)

Breaking Changes: None (dual-mode support maintained)

Migration Path:

  1. Use mvn spring-boot:run to start Spring Boot mode
  2. Legacy Undertow mode still available via Server.main()
  3. All existing functionality preserved
  4. New actuator endpoints available at /actuator/*

What to Update:

  • Start command: mvn spring-boot:run (recommended)
  • Configuration: Can use application.yml or legacy properties files
  • Health checks: Use /actuator/health instead of /health (both work)

What Stays the Same:

  • All existing endpoints work identically
  • Same configuration keys (backward compatible)
  • Same URL structure
  • Same features

Phase 1: Java 21 Migration (2025-12)

Breaking Changes: None (runtime upgrade only)

Migration Path:

  1. Install Java 21 LTS
  2. Rebuild with mvn clean install
  3. Test with existing configuration

What to Update:

  • Java runtime: 11 → 21
  • Tests: TestNG → JUnit 5 (if adding new tests)

Upgrade Guide

From 0.10.16 to 0.10.17-SNAPSHOT

Recommended:

# 1. Backup configuration
cp security.properties security.properties.backup

# 2. Pull latest code
git pull origin master

# 3. Build
mvn clean install

# 4. Run with Spring Boot (recommended)
mvn spring-boot:run

# Or run with legacy Undertow mode
java -cp target/source-code-portal-*.jar no.cantara.docsite.Server

New Features to Try:

# Check application health
curl http://localhost:9090/actuator/health

# View application info
curl http://localhost:9090/actuator/info

# View metrics
curl http://localhost:9090/actuator/metrics

# Prometheus scraping endpoint
curl http://localhost:9090/actuator/prometheus

Versioning Strategy

  • Major version (X.0.0): Breaking changes, major features
  • Minor version (0.X.0): New features, backward compatible
  • Patch version (0.0.X): Bug fixes, minor improvements

Current strategy: Keep 0.X.Y until API stability achieved, then move to 1.0.0.


Support