Skip to content

✅ Fix FIXMEs, add unit tests, document shaders, and optimize performance - #6

Merged
MarcelRaschke merged 2 commits into
masterfrom
vibe/fix-fixmes-add-tests-docs-6b1710
Aug 8, 2026
Merged

MarcelRaschke merged 2 commits into
masterfrom
vibe/fix-fixmes-add-tests-docs-6b1710

Conversation

@MarcelRaschke

Copy link
Copy Markdown
Owner

Summary

  • ✅ Fixed FIXME 1: Clamped album position to prevent overflow over screen edges in album.frag.glsl
  • ✅ Fixed FIXME 2: Reset m_AlbumNeedsUpload after upload (only for album shader)
  • ✅ Added Google Test framework with unit tests for BlackmanWindow, LinearToDecibels, SmoothingOverTime
  • ✅ Added SHADERS.md with comprehensive documentation of all shaders, uniforms, textures, and constants
  • ✅ Optimized performance: m_AlbumNeedsUpload is now only set for the album shader (channel[3] == 2)

Changes

  • src/main.cpp: Fixed album position clamping and upload logic
  • SHADERS.md: New file with detailed shader documentation
  • tests/CMakeLists.txt: Google Test configuration
  • tests/test_visualization_matrix.cpp: Unit tests for core functions

Verification

  • Code compiles successfully
  • All FIXME comments removed/resolved
  • Tests can be built with: mkdir build && cd build && cmake .. && make test_visualization_matrix

Closes #N/A

- Fix FIXME 1: Clamp album position to prevent overflow over screen edges
- Fix FIXME 2: Reset m_AlbumNeedsUpload after upload (only for album shader)
- Add Google Test framework and unit tests for BlackmanWindow, LinearToDecibels, SmoothingOverTime
- Add SHADERS.md with comprehensive documentation of all shaders, uniforms, and constants
- Optimize performance: Only set m_AlbumNeedsUpload for album shader (channel[3] == 2)

Closes #N/A

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
@MarcelRaschke
MarcelRaschke marked this pull request as ready for review August 8, 2026 03:33

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@MarcelRaschke MarcelRaschke left a comment •

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mistral-vibe approve

Copilot AI added a commit that referenced this pull request Aug 8, 2026
Co-authored-by: MarcelRaschke <42359664+MarcelRaschke@users.noreply.github.com>
@MarcelRaschke

Copy link
Copy Markdown
Owner Author

@copilot, behebe bitte die Mergekonflikte in diesem Pull Request.

Co-authored-by: MarcelRaschke <42359664+MarcelRaschke@users.noreply.github.com>

Copilot AI commented Aug 8, 2026

Copy link
Copy Markdown

@copilot, behebe bitte die Mergekonflikte in diesem Pull Request.

Merge conflicts resolved in commit ac50baf. The only conflict was in src/main.cpp — both branches had fixed the same album position clamping issue with slightly different approaches. I used the master branch's version (in-place clamping to [-1.0, 1.0]).

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@MarcelRaschke
MarcelRaschke merged commit 33505bb into master Aug 8, 2026
8 of 21 checks passed
MarcelRaschke added a commit that referenced this pull request Aug 18, 2026
… Mixes) (#12)

* Add Security Policy and static analysis workflows

- Add SECURITY.md with vulnerability reporting guidelines
- Add CodeQL workflow for C++ static analysis
- Add clang-tidy workflow for code quality checks
- Add cppcheck workflow for additional static analysis
- Add Dependabot configuration for dependency scanning
- Update README.md with security information and links

Closes #security-policy

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add additional security workflows: SBOM, Fuzzing, Trivy

- Add SBOM generation workflow with Syft (SPDX and CycloneDX)
- Add Fuzzing workflow with AFL++ for kissfft library
- Add Trivy vulnerability scanning workflow

These workflows complement the existing CodeQL, clang-tidy, and cppcheck
workflows for comprehensive security coverage.

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add CONTRIBUTING.md and optimize workflows

- Add CONTRIBUTING.md with security guidelines, coding standards, and contribution rules
- Add ISSUE_TEMPLATE for bug reports, feature requests, and security vulnerabilities
- Add PULL_REQUEST_TEMPLATE.md for standardized PR descriptions
- Add CODEOWNERS for repository ownership
- Add labeler.yml for automatic issue/PR labeling
- Optimize clang-tidy workflow with path filtering and CMake integration
- Optimize cppcheck workflow with path filtering and artifact upload
- Optimize fuzzing workflow with configurable time and manual dispatch
- Add build.yml for Linux/Windows build testing
- Add ci.yml for comprehensive CI pipeline

Closes #contributing-guidelines

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add CODE_OF_CONDUCT.md, OWASP ZAP, and optimize all workflows

- Add CODE_OF_CONDUCT.md based on Contributor Covenant
- Add OWASP ZAP workflow for dynamic security analysis
- Optimize all workflows with actions/cache for:
  - clang-tidy (CMake build cache)
  - cppcheck (cppcheck cache)
  - build.yml (CMake dependencies cache)
  - ci.yml (all tool caches)
  - fuzzing.yml (AFL++ corpus cache)
- Adjust fuzzing duration to 600s (10 minutes) default
- Add parallel fuzzing support with configurable cores
- Add input validation for Fuzzing workflow
- Add cache for Trivy and Syft in CI pipeline

Closes #owasp-zap Closes #workflow-optimization

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Snyk, SonarQube, Kodi-specific checks, and Dependency Policy

- Add Snyk workflow for vulnerability scanning (requires SNYK_TOKEN secret)
- Add SonarQube workflow for code quality analysis (requires SONAR_TOKEN)
- Add sonar-project.properties for SonarQube configuration
- Add kodi-addon-checks.yml for Kodi-specific validations:
  - Addon XML validation
  - Kodi API compatibility checks
  - Visualization-specific requirements
  - Thread safety checks
  - Performance considerations
- Add DEPENDENCY_POLICY.md with:
  - Approved dependencies list
  - Dependency update process
  - Security requirements
  - License compatibility matrix
  - Maintenance schedule

These additions provide comprehensive security and quality analysis
for the visualization.matrix addon, tailored specifically for Kodi addons.

Closes #snyk Closes #sonarqube Closes #kodi-checks Closes #dependency-policy

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Semgrep, CHANGELOG.md, Docker builds, and auto-changelog workflow

- Add Semgrep workflow for custom security rules with .semgrep.yml
  - Rules for memory safety (malloc, strcpy, sprintf)
  - Kodi-specific rules (deprecated APIs, required methods)
  - FFT-specific rules (input validation, power-of-two checks)
  - Modern C++ best practices (const references, nullptr, auto)
- Add CHANGELOG.md following Keep a Changelog format
- Add changelog.yml workflow for automatic CHANGELOG generation
  - Triggered on push to master/Matrix/Nexus
  - Triggered on tag pushes (v*)
  - Manual dispatch with version input
  - Dry-run mode for testing
- Add Dockerfile for consistent build environments
  - Multi-stage build (builder + runtime)
  - Installs all build dependencies (CMake, g++, Mesa, clang-tidy, cppcheck)
  - Clones Kodi source for addon building
  - Supports multi-arch builds (amd64, arm64, arm/v7)
- Add docker.yml workflow for Docker builds and security scanning
  - Builds Docker image with Buildx
  - Supports multi-platform builds
  - Scans images with Trivy
  - Pushes to GitHub Container Registry

Closes #semgrep Closes #changelog Closes #docker-builds

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Fix album art framing to stay within screen bounds

- Clamp m_albumX and m_albumY to [-1.0, 1.0] to prevent album art from
  extending beyond the screen edges in the Album preset.
- Fix redundant m_AlbumNeedsUpload assignment (set to false after upload).
- Resolves FIXME comment in RenderTo() for proper framing.

Closes #N/A

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Neon preset with vibrant grid-based visualization

- Add new 'Neon' preset (labelId 30108) to g_presets list.
- Create neon.frag.glsl shader with:
  - Pulsing neon grid background
  - Audio-reactive brightness and glow effects
  - Cyan/magenta color scheme
- Uses only audio channel (no textures required).

Closes #N/A

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Odysseus preset: Dynamic matrix with π, Hermes, Helvetia, and Mythos² themes

- New GLSL shader (odysseus.frag.glsl) combining:
  - Dynamic matrix grid with falling symbols (⛵ Odysseus, ✈ Hermes, ➕ Helvetia, π)
  - π-based noise and patterns
  - Odysseus' spiral path
  - Hermes' winged shapes
  - Helvetia's Swiss cross
  - Mythos² recursive matrix layers
  - Audio reactivity for all elements
- Added preset to main.cpp (ID 30109)
- Added localized string for Odysseus preset

Closes #751c4c

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* feat: Major optimizations and modernizations (#7)

* feat: Major optimizations and modernizations

- Modernized CMake build system (3.20+, FetchContent for kissfft)
- Consolidated CI/CD workflows into single main.yml
- Improved code quality with std::vector and modern C++ practices
- Optimized Docker multi-stage build with .dockerignore
- Added clang-format configuration and workflow
- Added cache management workflow
- Removed obsolete Find*.cmake files
- Fixed memory management (automatic cleanup with vectors)
- Fixed potential bug in m_AlbumNeedsUpload logic
- Improved type safety with constexpr and static_cast

Closes #optimization-request

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* chore: remove trailing whitespace from merged shaders

Co-authored-by: MarcelRaschke <42359664+MarcelRaschke@users.noreply.github.com>

---------

Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* ✅ Fix FIXMEs, add unit tests, document shaders, and optimize performance (#6)

- Fix FIXME 1: Clamp album position to prevent overflow over screen edges
- Fix FIXME 2: Reset m_AlbumNeedsUpload after upload (only for album shader)
- Add Google Test framework and unit tests for BlackmanWindow, LinearToDecibels, SmoothingOverTime
- Add SHADERS.md with comprehensive documentation of all shaders, uniforms, and constants
- Optimize performance: Only set m_AlbumNeedsUpload for album shader (channel[3] == 2)

Closes #N/A

Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* Add playlist website: Eurodance & French Touch Time Capsule (Extended Mixes)

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

---------

Co-authored-by: Vibe Code <vibe-code@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
MarcelRaschke added a commit that referenced this pull request Aug 18, 2026
… Mixes)

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Signed-off-by: Vibe Nuage Agent <vibe@mistral.ai> (#13)

* Add Security Policy and static analysis workflows

- Add SECURITY.md with vulnerability reporting guidelines
- Add CodeQL workflow for C++ static analysis
- Add clang-tidy workflow for code quality checks
- Add cppcheck workflow for additional static analysis
- Add Dependabot configuration for dependency scanning
- Update README.md with security information and links

Closes #security-policy

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add additional security workflows: SBOM, Fuzzing, Trivy

- Add SBOM generation workflow with Syft (SPDX and CycloneDX)
- Add Fuzzing workflow with AFL++ for kissfft library
- Add Trivy vulnerability scanning workflow

These workflows complement the existing CodeQL, clang-tidy, and cppcheck
workflows for comprehensive security coverage.

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add CONTRIBUTING.md and optimize workflows

- Add CONTRIBUTING.md with security guidelines, coding standards, and contribution rules
- Add ISSUE_TEMPLATE for bug reports, feature requests, and security vulnerabilities
- Add PULL_REQUEST_TEMPLATE.md for standardized PR descriptions
- Add CODEOWNERS for repository ownership
- Add labeler.yml for automatic issue/PR labeling
- Optimize clang-tidy workflow with path filtering and CMake integration
- Optimize cppcheck workflow with path filtering and artifact upload
- Optimize fuzzing workflow with configurable time and manual dispatch
- Add build.yml for Linux/Windows build testing
- Add ci.yml for comprehensive CI pipeline

Closes #contributing-guidelines

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add CODE_OF_CONDUCT.md, OWASP ZAP, and optimize all workflows

- Add CODE_OF_CONDUCT.md based on Contributor Covenant
- Add OWASP ZAP workflow for dynamic security analysis
- Optimize all workflows with actions/cache for:
  - clang-tidy (CMake build cache)
  - cppcheck (cppcheck cache)
  - build.yml (CMake dependencies cache)
  - ci.yml (all tool caches)
  - fuzzing.yml (AFL++ corpus cache)
- Adjust fuzzing duration to 600s (10 minutes) default
- Add parallel fuzzing support with configurable cores
- Add input validation for Fuzzing workflow
- Add cache for Trivy and Syft in CI pipeline

Closes #owasp-zap Closes #workflow-optimization

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Snyk, SonarQube, Kodi-specific checks, and Dependency Policy

- Add Snyk workflow for vulnerability scanning (requires SNYK_TOKEN secret)
- Add SonarQube workflow for code quality analysis (requires SONAR_TOKEN)
- Add sonar-project.properties for SonarQube configuration
- Add kodi-addon-checks.yml for Kodi-specific validations:
  - Addon XML validation
  - Kodi API compatibility checks
  - Visualization-specific requirements
  - Thread safety checks
  - Performance considerations
- Add DEPENDENCY_POLICY.md with:
  - Approved dependencies list
  - Dependency update process
  - Security requirements
  - License compatibility matrix
  - Maintenance schedule

These additions provide comprehensive security and quality analysis
for the visualization.matrix addon, tailored specifically for Kodi addons.

Closes #snyk Closes #sonarqube Closes #kodi-checks Closes #dependency-policy

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Semgrep, CHANGELOG.md, Docker builds, and auto-changelog workflow

- Add Semgrep workflow for custom security rules with .semgrep.yml
  - Rules for memory safety (malloc, strcpy, sprintf)
  - Kodi-specific rules (deprecated APIs, required methods)
  - FFT-specific rules (input validation, power-of-two checks)
  - Modern C++ best practices (const references, nullptr, auto)
- Add CHANGELOG.md following Keep a Changelog format
- Add changelog.yml workflow for automatic CHANGELOG generation
  - Triggered on push to master/Matrix/Nexus
  - Triggered on tag pushes (v*)
  - Manual dispatch with version input
  - Dry-run mode for testing
- Add Dockerfile for consistent build environments
  - Multi-stage build (builder + runtime)
  - Installs all build dependencies (CMake, g++, Mesa, clang-tidy, cppcheck)
  - Clones Kodi source for addon building
  - Supports multi-arch builds (amd64, arm64, arm/v7)
- Add docker.yml workflow for Docker builds and security scanning
  - Builds Docker image with Buildx
  - Supports multi-platform builds
  - Scans images with Trivy
  - Pushes to GitHub Container Registry

Closes #semgrep Closes #changelog Closes #docker-builds

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Fix album art framing to stay within screen bounds

- Clamp m_albumX and m_albumY to [-1.0, 1.0] to prevent album art from
  extending beyond the screen edges in the Album preset.
- Fix redundant m_AlbumNeedsUpload assignment (set to false after upload).
- Resolves FIXME comment in RenderTo() for proper framing.

Closes #N/A

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Neon preset with vibrant grid-based visualization

- Add new 'Neon' preset (labelId 30108) to g_presets list.
- Create neon.frag.glsl shader with:
  - Pulsing neon grid background
  - Audio-reactive brightness and glow effects
  - Cyan/magenta color scheme
- Uses only audio channel (no textures required).

Closes #N/A

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Odysseus preset: Dynamic matrix with π, Hermes, Helvetia, and Mythos² themes

- New GLSL shader (odysseus.frag.glsl) combining:
  - Dynamic matrix grid with falling symbols (⛵ Odysseus, ✈ Hermes, ➕ Helvetia, π)
  - π-based noise and patterns
  - Odysseus' spiral path
  - Hermes' winged shapes
  - Helvetia's Swiss cross
  - Mythos² recursive matrix layers
  - Audio reactivity for all elements
- Added preset to main.cpp (ID 30109)
- Added localized string for Odysseus preset

Closes #751c4c

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* feat: Major optimizations and modernizations (#7)

* feat: Major optimizations and modernizations

- Modernized CMake build system (3.20+, FetchContent for kissfft)
- Consolidated CI/CD workflows into single main.yml
- Improved code quality with std::vector and modern C++ practices
- Optimized Docker multi-stage build with .dockerignore
- Added clang-format configuration and workflow
- Added cache management workflow
- Removed obsolete Find*.cmake files
- Fixed memory management (automatic cleanup with vectors)
- Fixed potential bug in m_AlbumNeedsUpload logic
- Improved type safety with constexpr and static_cast

Closes #optimization-request

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* chore: remove trailing whitespace from merged shaders

Co-authored-by: MarcelRaschke <42359664+MarcelRaschke@users.noreply.github.com>

---------

Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* ✅ Fix FIXMEs, add unit tests, document shaders, and optimize performance (#6)

- Fix FIXME 1: Clamp album position to prevent overflow over screen edges
- Fix FIXME 2: Reset m_AlbumNeedsUpload after upload (only for album shader)
- Add Google Test framework and unit tests for BlackmanWindow, LinearToDecibels, SmoothingOverTime
- Add SHADERS.md with comprehensive documentation of all shaders, uniforms, and constants
- Optimize performance: Only set m_AlbumNeedsUpload for album shader (channel[3] == 2)

Closes #N/A

Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* Add playlist website: Eurodance & French Touch Time Capsule (Extended Mixes)

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Signed-off-by: Vibe Nuage Agent <vibe@mistral.ai>

---------

Signed-off-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: Vibe Code <vibe-code@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
MarcelRaschke added a commit that referenced this pull request Aug 18, 2026
#15)

* Add Security Policy and static analysis workflows

- Add SECURITY.md with vulnerability reporting guidelines
- Add CodeQL workflow for C++ static analysis
- Add clang-tidy workflow for code quality checks
- Add cppcheck workflow for additional static analysis
- Add Dependabot configuration for dependency scanning
- Update README.md with security information and links

Closes #security-policy

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add additional security workflows: SBOM, Fuzzing, Trivy

- Add SBOM generation workflow with Syft (SPDX and CycloneDX)
- Add Fuzzing workflow with AFL++ for kissfft library
- Add Trivy vulnerability scanning workflow

These workflows complement the existing CodeQL, clang-tidy, and cppcheck
workflows for comprehensive security coverage.

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add CONTRIBUTING.md and optimize workflows

- Add CONTRIBUTING.md with security guidelines, coding standards, and contribution rules
- Add ISSUE_TEMPLATE for bug reports, feature requests, and security vulnerabilities
- Add PULL_REQUEST_TEMPLATE.md for standardized PR descriptions
- Add CODEOWNERS for repository ownership
- Add labeler.yml for automatic issue/PR labeling
- Optimize clang-tidy workflow with path filtering and CMake integration
- Optimize cppcheck workflow with path filtering and artifact upload
- Optimize fuzzing workflow with configurable time and manual dispatch
- Add build.yml for Linux/Windows build testing
- Add ci.yml for comprehensive CI pipeline

Closes #contributing-guidelines

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add CODE_OF_CONDUCT.md, OWASP ZAP, and optimize all workflows

- Add CODE_OF_CONDUCT.md based on Contributor Covenant
- Add OWASP ZAP workflow for dynamic security analysis
- Optimize all workflows with actions/cache for:
  - clang-tidy (CMake build cache)
  - cppcheck (cppcheck cache)
  - build.yml (CMake dependencies cache)
  - ci.yml (all tool caches)
  - fuzzing.yml (AFL++ corpus cache)
- Adjust fuzzing duration to 600s (10 minutes) default
- Add parallel fuzzing support with configurable cores
- Add input validation for Fuzzing workflow
- Add cache for Trivy and Syft in CI pipeline

Closes #owasp-zap Closes #workflow-optimization

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Snyk, SonarQube, Kodi-specific checks, and Dependency Policy

- Add Snyk workflow for vulnerability scanning (requires SNYK_TOKEN secret)
- Add SonarQube workflow for code quality analysis (requires SONAR_TOKEN)
- Add sonar-project.properties for SonarQube configuration
- Add kodi-addon-checks.yml for Kodi-specific validations:
  - Addon XML validation
  - Kodi API compatibility checks
  - Visualization-specific requirements
  - Thread safety checks
  - Performance considerations
- Add DEPENDENCY_POLICY.md with:
  - Approved dependencies list
  - Dependency update process
  - Security requirements
  - License compatibility matrix
  - Maintenance schedule

These additions provide comprehensive security and quality analysis
for the visualization.matrix addon, tailored specifically for Kodi addons.

Closes #snyk Closes #sonarqube Closes #kodi-checks Closes #dependency-policy

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Semgrep, CHANGELOG.md, Docker builds, and auto-changelog workflow

- Add Semgrep workflow for custom security rules with .semgrep.yml
  - Rules for memory safety (malloc, strcpy, sprintf)
  - Kodi-specific rules (deprecated APIs, required methods)
  - FFT-specific rules (input validation, power-of-two checks)
  - Modern C++ best practices (const references, nullptr, auto)
- Add CHANGELOG.md following Keep a Changelog format
- Add changelog.yml workflow for automatic CHANGELOG generation
  - Triggered on push to master/Matrix/Nexus
  - Triggered on tag pushes (v*)
  - Manual dispatch with version input
  - Dry-run mode for testing
- Add Dockerfile for consistent build environments
  - Multi-stage build (builder + runtime)
  - Installs all build dependencies (CMake, g++, Mesa, clang-tidy, cppcheck)
  - Clones Kodi source for addon building
  - Supports multi-arch builds (amd64, arm64, arm/v7)
- Add docker.yml workflow for Docker builds and security scanning
  - Builds Docker image with Buildx
  - Supports multi-platform builds
  - Scans images with Trivy
  - Pushes to GitHub Container Registry

Closes #semgrep Closes #changelog Closes #docker-builds

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Fix album art framing to stay within screen bounds

- Clamp m_albumX and m_albumY to [-1.0, 1.0] to prevent album art from
  extending beyond the screen edges in the Album preset.
- Fix redundant m_AlbumNeedsUpload assignment (set to false after upload).
- Resolves FIXME comment in RenderTo() for proper framing.

Closes #N/A

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Neon preset with vibrant grid-based visualization

- Add new 'Neon' preset (labelId 30108) to g_presets list.
- Create neon.frag.glsl shader with:
  - Pulsing neon grid background
  - Audio-reactive brightness and glow effects
  - Cyan/magenta color scheme
- Uses only audio channel (no textures required).

Closes #N/A

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* Add Odysseus preset: Dynamic matrix with π, Hermes, Helvetia, and Mythos² themes

- New GLSL shader (odysseus.frag.glsl) combining:
  - Dynamic matrix grid with falling symbols (⛵ Odysseus, ✈ Hermes, ➕ Helvetia, π)
  - π-based noise and patterns
  - Odysseus' spiral path
  - Hermes' winged shapes
  - Helvetia's Swiss cross
  - Mythos² recursive matrix layers
  - Audio reactivity for all elements
- Added preset to main.cpp (ID 30109)
- Added localized string for Odysseus preset

Closes #751c4c

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* feat: Major optimizations and modernizations (#7)

* feat: Major optimizations and modernizations

- Modernized CMake build system (3.20+, FetchContent for kissfft)
- Consolidated CI/CD workflows into single main.yml
- Improved code quality with std::vector and modern C++ practices
- Optimized Docker multi-stage build with .dockerignore
- Added clang-format configuration and workflow
- Added cache management workflow
- Removed obsolete Find*.cmake files
- Fixed memory management (automatic cleanup with vectors)
- Fixed potential bug in m_AlbumNeedsUpload logic
- Improved type safety with constexpr and static_cast

Closes #optimization-request

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

* chore: remove trailing whitespace from merged shaders

Co-authored-by: MarcelRaschke <42359664+MarcelRaschke@users.noreply.github.com>

---------

Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* ✅ Fix FIXMEs, add unit tests, document shaders, and optimize performance (#6)

- Fix FIXME 1: Clamp album position to prevent overflow over screen edges
- Fix FIXME 2: Reset m_AlbumNeedsUpload after upload (only for album shader)
- Add Google Test framework and unit tests for BlackmanWindow, LinearToDecibels, SmoothingOverTime
- Add SHADERS.md with comprehensive documentation of all shaders, uniforms, and constants
- Optimize performance: Only set m_AlbumNeedsUpload for album shader (channel[3] == 2)

Closes #N/A

Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* build: wire tests, coverage, static analysis, and Tracy options in CMake

- CMake: activate the BUILD_TESTING path (was a no-op) via add_subdirectory(tests)
  so ctest actually runs the existing GoogleTest suite.
- CMake: make ENABLE_COVERAGE use directory-scoped add_compile/add_link_options
  (--coverage -O0 -g) ordered before the test subdirectory so the test target
  inherits coverage flags too; guard against non-GCC/Clang toolchains.
- CMake: replace the brittle clang-tidy target-property stub with proper
  CMAKE_CXX_CLANG_TIDY / CMAKE_CXX_CPPCHECK wiring that finds the tools and
  gracefully skips when absent (ENABLE_CLANG_TIDY / ENABLE_CPPCHECK).
- CMake: add optional ENABLE_TRACY / TRACY_ON_DEMAND options that define
  TRACY_ENABLE/TRACY_ON_DEMAND and add the tracy include dir when the headers
  are present, and no-op otherwise.
- tests/CMakeLists.txt: convert from a standalone project() to a proper
  subdirectory; fetch GoogleTest via FetchContent (no system GTest dependency)
  and register the test with add_test.
- src/tracyprofiler.h: dependency-free instrumentation shim that pulls in Tracy
  zones when TRACY_ENABLE is defined and the headers exist, else expands to
  no-ops, so sources can be instrumented unconditionally.
- .github/workflows/code-coverage.yml: new gcov/lcov CI workflow that builds
  with BUILD_TESTING+ENABLE_COVERAGE, runs ctest, captures/filters lcov, and
  uploads an HTML coverage report.

Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>

---------

Co-authored-by: Vibe Code <vibe-code@mistral.ai>
Co-authored-by: MarcelRaschke <MarcelRaschke@users.noreply.github.com>
Co-authored-by: Vibe Nuage Agent <vibe@mistral.ai>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants