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.
- GitHub Actions integration
- GitLab support
- Pull request dashboard
- Search functionality
- Dark mode support
0.10.17-SNAPSHOT - 2026-01-27
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 connectivityCacheHealthIndicator- Monitors cache manager and individual cache healthExecutorHealthIndicator- Monitors thread pool utilization and saturationApplicationInfoContributor- Provides application metadata
Spring MVC Controllers (Week 2-3 Migration):
PingRestController- Simple health check endpointHealthRestController- Enhanced health status with 14 cache stats, thread pools, GitHub rate limitEchoRestController- Echo diagnostic endpoint for request inspectionGitHubWebhookRestController- GitHub webhook receiver with HMAC-SHA1 verificationBadgeResourceController- Badge serving (license, Jenkins, Snyk, Shields.io)DashboardWebController- Main dashboard page with ThymeleafGroupWebController- Repository group view pageCommitsWebController- Commit history page with filteringContentsWebController- Repository contents/README pageWikiWebController- Cantara wiki pageCorsConfiguration- Spring Boot CORS configuration (replaces CORSController)
Configuration:
ApplicationProperties- Type-safe configuration (90+ properties)ConfigurationBridge- Backward compatibility bridge for legacy codeSpringBootInitializer- 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
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
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.mdfor migration guide
Legacy Components (will be removed in future version):
- Undertow standalone mode (use
mvn spring-boot:runinstead) - 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)
Build Issues:
- JSON-B auto-configuration conflict with Spring Boot 3.2.2 (excluded JsonbAutoConfiguration)
- Maven JAR plugin compatibility issue (use
mvn spring-boot:runas workaround)
Configuration Issues:
- DynamicConfiguration interface compatibility (created adapter pattern)
- Environment variable support (SCP_* prefix now supported)
0.10.16 - 2025-12-XX
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)
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
- 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
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
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
- GitHub API rate limiting issues
- Cache synchronization bugs
- Template rendering errors
0.10.0 - 2020-XX-XX
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
Breaking Changes: None (dual-mode support maintained)
Migration Path:
- Use
mvn spring-boot:runto start Spring Boot mode - Legacy Undertow mode still available via
Server.main() - All existing functionality preserved
- New actuator endpoints available at
/actuator/*
What to Update:
- Start command:
mvn spring-boot:run(recommended) - Configuration: Can use
application.ymlor legacy properties files - Health checks: Use
/actuator/healthinstead of/health(both work)
What Stays the Same:
- All existing endpoints work identically
- Same configuration keys (backward compatible)
- Same URL structure
- Same features
Breaking Changes: None (runtime upgrade only)
Migration Path:
- Install Java 21 LTS
- Rebuild with
mvn clean install - Test with existing configuration
What to Update:
- Java runtime: 11 → 21
- Tests: TestNG → JUnit 5 (if adding new tests)
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.ServerNew 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- 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.
- Issues: Report bugs at GitHub Issues
- Discussions: Ask questions at GitHub Discussions
- Security: Report vulnerabilities to security@cantara.no