feat: v0.4.0 - License change, bug fixes, and CI improvements #33

Merged
bscott merged 2 commits from v0.4.0 into main 2025-08-09 20:47:42 -04:00
bscott commented 2025-08-09 20:38:09 -04:00 (Migrated from github.com)

Major Changes:

  • Change license from MIT to AGPL-3.0 for stronger copyleft protection
  • Add comprehensive documentation about price history limitations

Bug Fixes:

  • Fix SMTP username validation to support non-email providers like Resend (#26)
  • Improve ARM64 template loading with better error handling (#13)
  • Fix hardcoded currency symbols in subscription display (#16, #14)
  • Document price history calculation limitations (#32)

Development Improvements:

  • Optimize CI/CD: Only build/push Docker on main/tags, not PRs
  • Add separate PR testing workflow with Go tests and Docker build verification
  • Implement proper Docker tag generation (v0.4.0 → 0.4.0, 0.4)
  • Add Playwright testing framework with multi-browser support
  • Enhanced template loading with fallback for cross-platform compatibility
Major Changes: - Change license from MIT to AGPL-3.0 for stronger copyleft protection - Add comprehensive documentation about price history limitations Bug Fixes: - Fix SMTP username validation to support non-email providers like Resend (#26) - Improve ARM64 template loading with better error handling (#13) - Fix hardcoded currency symbols in subscription display (#16, #14) - Document price history calculation limitations (#32) Development Improvements: - Optimize CI/CD: Only build/push Docker on main/tags, not PRs - Add separate PR testing workflow with Go tests and Docker build verification - Implement proper Docker tag generation (v0.4.0 → 0.4.0, 0.4) - Add Playwright testing framework with multi-browser support - Enhanced template loading with fallback for cross-platform compatibility
copilot-pull-request-reviewer[bot] (Migrated from github.com) reviewed 2025-08-09 20:38:50 -04:00
copilot-pull-request-reviewer[bot] (Migrated from github.com) left a comment

Pull Request Overview

This PR introduces version 0.4.0 with a significant license change from MIT to AGPL-3.0, along with critical bug fixes and CI/CD improvements. The changes enhance cross-platform compatibility and strengthen the project's copyleft licensing.

  • License change from MIT to AGPL-3.0 for stronger copyleft protection
  • Bug fixes for ARM64 template loading and improved error handling
  • CI/CD optimization separating PR testing from main branch Docker publishing

Reviewed Changes

Copilot reviewed 5 out of 473 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
cmd/server/main.go Added robust template loading with ARM64 compatibility and fallback mechanisms
README.md Updated license badge and added comprehensive price history limitations documentation
LICENSE Complete license change from MIT to AGPL-3.0 with full license text
.github/workflows/test-build.yml New PR testing workflow with Go tests and Docker build verification
.github/workflows/docker-publish.yml Optimized to only build/push on main branch and tags, not PRs
## Pull Request Overview This PR introduces version 0.4.0 with a significant license change from MIT to AGPL-3.0, along with critical bug fixes and CI/CD improvements. The changes enhance cross-platform compatibility and strengthen the project's copyleft licensing. - License change from MIT to AGPL-3.0 for stronger copyleft protection - Bug fixes for ARM64 template loading and improved error handling - CI/CD optimization separating PR testing from main branch Docker publishing ### Reviewed Changes Copilot reviewed 5 out of 473 changed files in this pull request and generated 3 comments. <details> <summary>Show a summary per file</summary> | File | Description | | ---- | ----------- | | cmd/server/main.go | Added robust template loading with ARM64 compatibility and fallback mechanisms | | README.md | Updated license badge and added comprehensive price history limitations documentation | | LICENSE | Complete license change from MIT to AGPL-3.0 with full license text | | .github/workflows/test-build.yml | New PR testing workflow with Go tests and Docker build verification | | .github/workflows/docker-publish.yml | Optimized to only build/push on main branch and tags, not PRs | </details>
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-08-09 20:38:50 -04:00

The div function checks for zero division but returns 0 when b == 0. This could mask calculation errors in templates. Consider returning an error or a special value that indicates division by zero occurred.

				return math.NaN()
The div function checks for zero division but returns 0 when b == 0. This could mask calculation errors in templates. Consider returning an error or a special value that indicates division by zero occurred. ```suggestion return math.NaN() ```
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-08-09 20:38:50 -04:00

The error from os.Stat is ignored when the file doesn't exist. Consider logging when template files are missing to aid debugging, especially since this function is designed to handle ARM64-specific template loading issues.

The error from os.Stat is ignored when the file doesn't exist. Consider logging when template files are missing to aid debugging, especially since this function is designed to handle ARM64-specific template loading issues.
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-08-09 20:38:50 -04:00

The ParseFiles result is ignored and only errors are logged. If parsing fails for some files but succeeds for others, the function continues silently. Consider tracking successful vs failed template parsing to ensure critical templates are loaded.

	var failedTemplates []string
	for _, file := range templateFiles {
		if _, err := os.Stat(file); err == nil {
			if _, err := tmpl.ParseFiles(file); err != nil {
				log.Printf("Warning: Failed to parse template %s: %v", file, err)
				failedTemplates = append(failedTemplates, file)
			}
		} else {
			log.Printf("Warning: Template file %s does not exist: %v", file, err)
			failedTemplates = append(failedTemplates, file)
		}
	}

	if len(failedTemplates) > 0 {
		log.Fatalf("Critical error: Failed to parse the following templates: %v", failedTemplates)
		return nil
	}
The ParseFiles result is ignored and only errors are logged. If parsing fails for some files but succeeds for others, the function continues silently. Consider tracking successful vs failed template parsing to ensure critical templates are loaded. ```suggestion var failedTemplates []string for _, file := range templateFiles { if _, err := os.Stat(file); err == nil { if _, err := tmpl.ParseFiles(file); err != nil { log.Printf("Warning: Failed to parse template %s: %v", file, err) failedTemplates = append(failedTemplates, file) } } else { log.Printf("Warning: Template file %s does not exist: %v", file, err) failedTemplates = append(failedTemplates, file) } } if len(failedTemplates) > 0 { log.Fatalf("Critical error: Failed to parse the following templates: %v", failedTemplates) return nil } ```
copilot-pull-request-reviewer[bot] (Migrated from github.com) reviewed 2025-08-09 20:43:40 -04:00
copilot-pull-request-reviewer[bot] (Migrated from github.com) left a comment

Pull Request Overview

This PR implements version 0.4.0 with a major license change from MIT to AGPL-3.0, along with bug fixes for ARM64 compatibility, SMTP validation, and currency display issues. It also introduces CI/CD improvements with separate workflows for testing PRs and publishing Docker images.

  • License migration from MIT to AGPL-3.0 for stronger copyleft protection
  • Enhanced template loading with ARM64 compatibility and comprehensive error handling
  • CI/CD optimization with dedicated PR testing workflow and improved Docker publishing

Reviewed Changes

Copilot reviewed 5 out of 473 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
cmd/server/main.go Adds robust template loading with ARM64 compatibility, mathematical functions, and comprehensive error handling
README.md Updates license references and adds documentation about price history limitations
LICENSE Complete license replacement from MIT to AGPL-3.0
.github/workflows/test-build.yml New PR testing workflow with Go tests and Docker build verification
.github/workflows/docker-publish.yml Optimized CI/CD workflow removing PR triggers and adding semantic versioning
## Pull Request Overview This PR implements version 0.4.0 with a major license change from MIT to AGPL-3.0, along with bug fixes for ARM64 compatibility, SMTP validation, and currency display issues. It also introduces CI/CD improvements with separate workflows for testing PRs and publishing Docker images. - License migration from MIT to AGPL-3.0 for stronger copyleft protection - Enhanced template loading with ARM64 compatibility and comprehensive error handling - CI/CD optimization with dedicated PR testing workflow and improved Docker publishing ### Reviewed Changes Copilot reviewed 5 out of 473 changed files in this pull request and generated 2 comments. <details> <summary>Show a summary per file</summary> | File | Description | | ---- | ----------- | | cmd/server/main.go | Adds robust template loading with ARM64 compatibility, mathematical functions, and comprehensive error handling | | README.md | Updates license references and adds documentation about price history limitations | | LICENSE | Complete license replacement from MIT to AGPL-3.0 | | .github/workflows/test-build.yml | New PR testing workflow with Go tests and Docker build verification | | .github/workflows/docker-publish.yml | Optimized CI/CD workflow removing PR triggers and adding semantic versioning | </details>
@ -101,0 +144,4 @@
"templates/smtp-message.html",
"templates/form-errors.html",
"templates/error.html",
}
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-08-09 20:43:39 -04:00

Returning NaN for division by zero in a template function could cause unexpected behavior in HTML rendering. Consider returning 0 or an error value that's more predictable in template contexts.

				return 0
Returning NaN for division by zero in a template function could cause unexpected behavior in HTML rendering. Consider returning 0 or an error value that's more predictable in template contexts. ```suggestion return 0 ```
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-08-09 20:43:40 -04:00

The magic number '/2' for determining when too many templates have failed should be defined as a named constant for better maintainability and clarity.

	if failedCount > len(templateFiles)/templateFailureThresholdDivisor {
The magic number '/2' for determining when too many templates have failed should be defined as a named constant for better maintainability and clarity. ```suggestion if failedCount > len(templateFiles)/templateFailureThresholdDivisor { ```
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bscott/subtrackr!33
No description provided.