Skip to content

Release 16.3.0#402

Merged
Alfagun74 merged 54 commits intomasterfrom
develop
Feb 15, 2026
Merged

Release 16.3.0#402
Alfagun74 merged 54 commits intomasterfrom
develop

Conversation

@Alfagun74
Copy link
Contributor

No description provided.

Improves code reliability and maintainability by introducing extensive unit test coverage for core modules and services.

Integrates a GitHub Actions workflow to automate test execution and coverage reporting, supporting continuous integration for key branches.

Encourages robust development practices and simplifies future feature changes and bug fixes.
- Add jest.config.ts with proper coverage exclusions (moved from package.json)
- Add 22 test files covering validators, filters, interceptors, middleware,
  decorators, auth guards, database service, metadata services, garbage
  collection, savefiles, and activity gateway
- 369 tests passing across 37 suites
- Coverage at 68.35% statements (up from 25%)
… dependency management

- Updated various guards, strategies, services, and controllers to use ConfigService instead of direct configuration imports.
- Introduced a private `config` getter in multiple classes to access application configuration.
- Ensured that testing flags and other configuration values are accessed through the ConfigService for improved testability and maintainability.
Copilot AI review requested due to automatic review settings February 15, 2026 12:12
Comment on lines +17 to +19
uses: ./.github/workflows/test.yml

docker:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}

Copilot Autofix

AI 12 days ago

To fix this, the workflow should explicitly define minimal GITHUB_TOKEN permissions using a permissions: block. The safest, least invasive fix is to add a root-level permissions section (applies to all jobs that do not override it) with read-only access to repository contents and packages, which is generally sufficient for building and pushing Docker images when registry authentication is done via dedicated secrets (as here with DOCKERHUB_TOKEN and SONAR_TOKEN). The login steps to Docker Hub and GHCR use username/password or secrets.GITHUB_TOKEN as a password to the container registry, which does not require repository write permissions.

Concretely, in .github/workflows/deploy.yml, directly after the on: block (after line 10, before concurrency:), add:

permissions:
  contents: read
  packages: read

This sets default permissions for the entire workflow, including the test, docker, manifest, and sonarcloud jobs, without changing their functionality. No additional imports or methods are required: this is a pure YAML configuration change.

Suggested changeset 1
.github/workflows/deploy.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -8,6 +8,10 @@
       - develop
       - early-access
 
+permissions:
+  contents: read
+  packages: read
+
 concurrency:
   group: deploy-${{ github.ref }}
   cancel-in-progress: true
EOF
@@ -8,6 +8,10 @@
- develop
- early-access

permissions:
contents: read
packages: read

concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: true
Copilot is powered by AI and may make mistakes. Always verify output.
@Alfagun74 Alfagun74 committed this autofix suggestion 12 days ago.
Comment on lines +20 to +86
needs: test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
outputs:
version: ${{ steps.package-version.outputs.current-version }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: "${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/hotfix' && 0 || 1 }}"

- name: Fetch Current Package Version
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/hotfix' || github.ref == 'refs/heads/develop'
id: package-version
uses: martinbeentjes/npm-get-version-action@v1.3.1

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: phalcode
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: phalcode
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and Push by digest
id: build
uses: docker/build-push-action@v6
with:
platforms: ${{ matrix.platform }}
tags: |
phalcode/gamevault-backend
ghcr.io/phalcode/gamevault-backend
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-${{ strategy.job-index }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1

manifest:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 12 days ago

In general, to fix this issue you should add an explicit permissions: block either at the workflow root (to apply to all jobs) or per job, granting only the minimal set of scopes each job actually needs. This documents the intended access and ensures the workflow does not accidentally gain broader permissions if repository or organization defaults change.

For this workflow, the cleanest approach without changing functionality is:

  • Add a root‑level permissions: granting contents: read and packages: read, which is sufficient for:
    • actions/checkout (needs repo contents read).
    • actions/upload-artifact and actions/download-artifact (use the token but only need repo read).
    • Docker build/push to external registries using provided secrets (these don’t need repo write).
  • Override permissions for the manifest job only, since it runs CupOfTea696/gh-action-auto-release to create GitHub tags and releases, which requires write access. For that job, set:
    • contents: write (to create tags and releases).
    • packages: read (to maintain consistency with the root and any package needs).
  • The test job is a reusable workflow (uses: ./.github/workflows/test.yml). Its internal permissions should be defined in that called workflow; this top‑level workflow’s default permissions will apply to it unless overridden inside test.yml.

Concretely:

  1. In .github/workflows/deploy.yml, insert a root‑level permissions: block after the on: section (before concurrency:) with:
    permissions:
      contents: read
      packages: read
  2. In the same file, inside the manifest job definition, add:
    permissions:
      contents: write
      packages: read
    directly under runs-on: ubuntu-latest.

No imports or external dependencies are needed for this change; it’s purely YAML configuration inside the existing workflow.

Suggested changeset 1
.github/workflows/deploy.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -8,6 +8,10 @@
       - develop
       - early-access
 
+permissions:
+  contents: read
+  packages: read
+
 concurrency:
   group: deploy-${{ github.ref }}
   cancel-in-progress: true
@@ -86,6 +90,9 @@
   manifest:
     needs: docker
     runs-on: ubuntu-latest
+    permissions:
+      contents: write
+      packages: read
     steps:
       - name: Download digests
         uses: actions/download-artifact@v4
EOF
@@ -8,6 +8,10 @@
- develop
- early-access

permissions:
contents: read
packages: read

concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: true
@@ -86,6 +90,9 @@
manifest:
needs: docker
runs-on: ubuntu-latest
permissions:
contents: write
packages: read
steps:
- name: Download digests
uses: actions/download-artifact@v4
Copilot is powered by AI and may make mistakes. Always verify output.
Unable to commit as this autofix suggestion is now outdated
Comment on lines +87 to +160
needs: docker
runs-on: ubuntu-latest
steps:
- name: Download digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: digests-*
merge-multiple: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: phalcode
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: phalcode
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create manifest list and push
run: |
BRANCH="${GITHUB_REF#refs/heads/}"
VERSION="${{ needs.docker.outputs.version }}"

push_manifest() {
local REPO=$1
local TAGS=$2
local ARGS=""
for tag in $TAGS; do
ARGS="$ARGS -t $REPO:$tag"
done

docker buildx imagetools create $ARGS \
$(printf "$REPO@sha256:%s " $(ls /tmp/digests))
}

case "$BRANCH" in
master|hotfix)
push_manifest "phalcode/gamevault-backend" "latest $VERSION"
push_manifest "ghcr.io/phalcode/gamevault-backend" "latest $VERSION"
;;
develop)
push_manifest "phalcode/gamevault-backend" "unstable"
push_manifest "ghcr.io/phalcode/gamevault-backend" "unstable"
;;
early-access)
push_manifest "phalcode/gamevault-backend" "early-access"
push_manifest "ghcr.io/phalcode/gamevault-backend" "early-access"
;;
esac

- name: Create Github Tag & Release
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/hotfix'
id: release
uses: CupOfTea696/gh-action-auto-release@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Discord notification
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/hotfix'
uses: Ilshidur/action-discord@master
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_BOT_WEBHOOK }}
with:
args: "<@&1128857090090340382> New Release: {{ EVENT_PAYLOAD.repository.full_name }} v$VERSION has been deployed. Here are the changes: https://github.com/{{ EVENT_PAYLOAD.repository.full_name }}/releases/tag/$VERSION"

sonarcloud:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}

Copilot Autofix

AI 12 days ago

To fix this, add explicit permissions blocks to the workflow so that the default for all jobs is read‑only, and then grant elevated permissions only to the jobs that need them. This constrains what GITHUB_TOKEN can do while keeping existing behavior intact.

The safest pattern here is:

  • At the top level (root of the workflow), add permissions: contents: read so that all jobs default to read‑only access.
  • For jobs that need to publish releases or otherwise write to the repository, override with job‑level permissions. In this workflow, the manifest job runs CupOfTea696/gh-action-auto-release, which creates tags/releases and thus needs contents: write. The sonarcloud job only needs to report status checks; SonarCloud’s official docs indicate it needs checks: write and pull-requests: read (and does not generally need contents: write for typical setups). The docker job appears to only build and push images to external registries using secrets.DOCKERHUB_TOKEN and secrets.GITHUB_TOKEN for GHCR authentication, but not to modify the GitHub repo; it can keep read‑only defaults.

Concretely:

  • In .github/workflows/deploy.yml, after name: Deploy (line 1) and before on: (line 3), insert a root‑level permissions block with contents: read.
  • Under the manifest job (line 86), add a permissions block specifying contents: write because of the GitHub tag & release step.
  • Under the sonarcloud job (line 160), add a permissions block specifying contents: read, checks: write, and pull-requests: read to match least privilege for analysis/reporting while avoiding broad write access to repository contents.

This keeps existing functionality while explicitly constraining token capabilities.

Suggested changeset 1
.github/workflows/deploy.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -1,5 +1,8 @@
 name: Deploy
 
+permissions:
+  contents: read
+
 on:
   push:
     branches:
@@ -86,6 +89,8 @@
   manifest:
     needs: docker
     runs-on: ubuntu-latest
+    permissions:
+      contents: write
     steps:
       - name: Download digests
         uses: actions/download-artifact@v4
@@ -161,6 +166,10 @@
     needs: test
     if: github.ref == 'refs/heads/develop'
     runs-on: ubuntu-latest
+    permissions:
+      contents: read
+      checks: write
+      pull-requests: read
     steps:
       - uses: actions/checkout@v4
         with:
EOF
@@ -1,5 +1,8 @@
name: Deploy

permissions:
contents: read

on:
push:
branches:
@@ -86,6 +89,8 @@
manifest:
needs: docker
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download digests
uses: actions/download-artifact@v4
@@ -161,6 +166,10 @@
needs: test
if: github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
permissions:
contents: read
checks: write
pull-requests: read
steps:
- uses: actions/checkout@v4
with:
Copilot is powered by AI and may make mistakes. Always verify output.
Unable to commit as this autofix suggestion is now outdated
Comment on lines +161 to +172
needs: test
if: github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 12 days ago

To fix this, explicitly declare a least-privilege permissions block in .github/workflows/deploy.yml. Because multiple jobs use GITHUB_TOKEN (Docker-related actions may read from the repo; the release action writes tags/releases; SonarCloud reads code metadata), the cleanest approach is:

  • Add a root-level permissions: block after the on: section that grants minimal read access globally.
  • For the job that needs write access (the release job within manifest), add a job-level permissions: block that augments or overrides with only the specific write scopes required (e.g., contents: write and optionally issues: write or pull-requests: write if that action uses them).

However, since we only see job headers for test, docker, manifest, and sonarcloud, and the CodeQL finding is on the sonarcloud job, the minimal non-breaking change is:

  • Add a root-level permissions: block granting read-only repo access: contents: read.
  • Add a job-level permissions: block to the manifest job to allow it to create tags and releases using GITHUB_TOKEN, e.g. contents: write. This keeps sonarcloud (and other jobs) limited to read-only while preserving existing release behavior.

No new methods or imports are needed; this is purely YAML configuration. The changes should be made within .github/workflows/deploy.yml near the top-level keys (on:, concurrency:, jobs:) and at the manifest: job definition.

Suggested changeset 1
.github/workflows/deploy.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -8,6 +8,9 @@
       - develop
       - early-access
 
+permissions:
+  contents: read
+
 concurrency:
   group: deploy-${{ github.ref }}
   cancel-in-progress: true
@@ -86,6 +89,8 @@
   manifest:
     needs: docker
     runs-on: ubuntu-latest
+    permissions:
+      contents: write
     steps:
       - name: Download digests
         uses: actions/download-artifact@v4
EOF
@@ -8,6 +8,9 @@
- develop
- early-access

permissions:
contents: read

concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: true
@@ -86,6 +89,8 @@
manifest:
needs: docker
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download digests
uses: actions/download-artifact@v4
Copilot is powered by AI and may make mistakes. Always verify output.
Unable to commit as this autofix suggestion is now outdated
Alfagun74 and others added 2 commits February 15, 2026 13:14
…in permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…in permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Release 16.3.0 aggregates platform features and infrastructure changes across the GameVault backend, including configuration refactors, new admin endpoints, and expanded test coverage.

Changes:

  • Migrate runtime configuration access toward NestJS Config via a global GAMEVAULT_CONFIG provider and injection decorator.
  • Add/adjust APIs and behaviors (HTTPS support, admin game upload/delete, news update endpoint, IGDB metadata enrichments, UNPLAYED filtering fix, plugin loader hardening).
  • Introduce/expand unit and e2e tests, plus CI workflow updates (tests + deploy pipeline refactor).

Reviewed changes

Copilot reviewed 93 out of 94 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/validators/media.validator.spec.ts Adds tests for MediaValidator behavior and default messages.
src/validators/is-optional-if.validator.spec.ts Adds tests for conditional optional validation decorator.
src/validators/is-date-string-before-now.validator.spec.ts Adds tests for date-string “before now” validator.
src/plugin.ts Ensures plugin inject directory exists before scanning/loading plugin modules.
src/modules/web-ui/web-ui.service.ts Switches Web UI service to injected configuration; refactors cache path.
src/modules/web-ui/web-ui.service.spec.ts Adds unit tests for Web UI caching/version selection behaviors.
src/modules/web-ui/web-ui.module.ts Resolves static root path to avoid relative path issues.
src/modules/users/users.service.ts Switches users service to injected configuration for server/testing/parental settings.
src/modules/users/users.controller.spec.ts Adds controller unit tests for user endpoints behavior.
src/modules/users/activity.gateway.spec.ts Adds gateway tests for activity tracking/broadcast.
src/modules/status/status.service.spec.ts Adds unit tests for status service and protocol behavior.
src/modules/status/status.e2e.spec.ts Converts status e2e test to real HTTP request against a test Nest app.
src/modules/status/status.controller.spec.ts Adds controller unit tests for role-based status detail.
src/modules/savefiles/savefile.service.ts Switches savefile service to injected config; adapts mime usage for ESM.
src/modules/savefiles/savefile.service.spec.ts Adds unit tests for savefile validation/upload/delete/download flows.
src/modules/progresses/progress.controller.spec.ts Adds controller tests for progress CRUD/increment endpoints.
src/modules/otp/otp.service.spec.ts Adds OTP service tests for creation/consumption/expiry behavior.
src/modules/otp/models/otp.model.spec.ts Adds OTP model tests including log redaction.
src/modules/metadata/tags/tags.metadata.controller.ts Adjusts tag list query to only include tags linked to non-deleted games; counts distinct games.
src/modules/metadata/tags/tags.metadata.controller.spec.ts Adds tests validating updated tag query/join/sort behavior.
src/modules/metadata/tags/tag.metadata.service.spec.ts Adds TagMetadataService unit tests for find/save semantics.
src/modules/metadata/publishers/publishers.metadata.controller.ts Adjusts publisher list query to only include publishers linked to non-deleted games; counts distinct games.
src/modules/metadata/publishers/publishers.metadata.controller.spec.ts Adds tests validating updated publisher query/join/sort behavior.
src/modules/metadata/publishers/publisher.metadata.service.spec.ts Adds PublisherMetadataService unit tests for find/save semantics.
src/modules/metadata/providers/igdb/models/gamevault-igdb-age-rating.map.ts Migrates IGDB age rating mapping to rating-name-based matching.
src/modules/metadata/providers/igdb/igdb.metadata-provider.service.ts Updates IGDB fields, early access mapping, adds time-to-beat fetch for average playtime, and new age rating mapping.
src/modules/metadata/providers/igdb/igdb.metadata-provider.service.spec.ts Adds tests for IGDB provider mapping, playtime fallback, and media download fallback.
src/modules/metadata/metadata.service.ts Uses injected config for metadata TTL and installer parameter defaults.
src/modules/metadata/genres/genres.metadata.controller.ts Adjusts genre list query to only include genres linked to non-deleted games; counts distinct games.
src/modules/metadata/genres/genres.metadata.controller.spec.ts Adds tests validating updated genre query/join/sort behavior.
src/modules/metadata/genres/genre.metadata.service.spec.ts Adds GenreMetadataService unit tests for find/save semantics.
src/modules/metadata/developers/developers.metadata.controller.ts Adjusts developer list query to only include developers linked to non-deleted games; counts distinct games.
src/modules/metadata/developers/developers.metadata.controller.spec.ts Adds tests validating updated developer query/join/sort behavior.
src/modules/metadata/developers/developer.metadata.service.spec.ts Adds DeveloperMetadataService unit tests for find/save semantics.
src/modules/media/media.service.ts Switches media service to injected config for volumes/testing/supported formats.
src/modules/media/media.service.spec.ts Adds unit tests for media availability, upload validation, and delete behavior.
src/modules/garbage-collection/media-garbage-collection.service.spec.ts Adds unit tests for media garbage collection behavior and guardrails.
src/modules/gamevault-config/gamevault-config.module.ts Adds global module providing GAMEVAULT_CONFIG via Nest ConfigService.
src/modules/games/models/game-type.enum.ts Adds WINDOWS_SOFTWARE and LINUX_SOFTWARE game types.
src/modules/games/games.service.spec.ts Adds GamesService unit tests (sorting, retrieval, existence checks, random).
src/modules/games/games.module.ts Registers Progress repository for games module queries.
src/modules/games/games.controller.ts Adds admin upload/delete game endpoints and rewrites UNPLAYED filter handling.
src/modules/games/games.controller.spec.ts Adds controller unit tests for new and existing game endpoints.
src/modules/games/files.service.spec.ts Adds FilesService tests covering upload/delete/download behavior and validation.
src/modules/database/db_configuration.ts Refactors DB config to accept AppConfiguration and uses async TypeORM config in module.
src/modules/database/database.service.ts Switches DB service to injected config; adapts mime usage for ESM; adjusts backup/restore flows.
src/modules/database/database.service.spec.ts Adds tests for DB password validation and in-memory DB guards.
src/modules/database/database.module.ts Moves to TypeOrmModule.forRootAsync using Nest ConfigService.
src/modules/config/models/update-news.dto.ts Adds DTO for updating news.md content.
src/modules/config/config.controller.ts Adds admin PUT endpoint to update news.md; uses injected config.
src/modules/auth/strategies/refresh-token.strategy.ts Switches refresh token secret to injected config.
src/modules/auth/strategies/oauth2.strategy.ts Switches OAuth2 strategy config to injected config; enables OAuth state.
src/modules/auth/strategies/authentication.strategy.ts Switches access token secret to injected config.
src/modules/auth/guards/authorization.guard.ts Switches auth-disable checks to injected config.
src/modules/auth/guards/authorization.guard.spec.ts Adds unit tests for AuthorizationGuard behaviors and auth-disabled mode.
src/modules/auth/guards/authentication.guard.ts Switches auth-disable checks to injected config.
src/modules/auth/guards/authentication.guard.spec.ts Adds unit tests for AuthenticationGuard and auth-disabled mode.
src/modules/auth/guards/api-key.guard.ts Switches auth-disable checks to injected config.
src/modules/auth/guards/api-key.guard.spec.ts Adds unit tests for ApiKeyGuard (HTTP/WS, error cases).
src/modules/auth/authentication.service.ts Switches refresh-token settings to injected config.
src/modules/auth/authentication.service.spec.ts Adds unit tests for AuthenticationService login/refresh/register/revoke flows.
src/modules/admin/admin.controller.spec.ts Adds unit tests for admin controller backup/restore/webui restart routes.
src/middleware/legacy-routes.middleware.spec.ts Adds tests for legacy route rewrite middleware.
src/main.ts Reworks bootstrap to use ExpressAdapter with explicit HTTP/HTTPS server creation and session middleware.
src/interceptors/http-logging.interceptor.ts Switches HTTP logging enablement to injected config.
src/interceptors/http-logging.interceptor.spec.ts Adds tests for HTTP logging interceptor behavior.
src/interceptors/disable-api-if.interceptor.spec.ts Adds tests for DisableApiIf interceptor behavior.
src/globals.ts Adds .appimage to executable formats.
src/gamevault-config.ts Adds helper to retrieve AppConfiguration from Nest ConfigService.
src/filters/http-exception.filter.spec.ts Adds tests for exception filter response behavior.
src/decorators/inject-gamevault-config.decorator.ts Adds decorator for injecting GAMEVAULT_CONFIG.
src/decorators/decorators.spec.ts Adds tests for decorator metadata behavior.
src/configuration.spec.ts Adds tests for config censoring, defaults, and YAML/env precedence.
src/app.module.ts Introduces global Nest ConfigModule setup and GamevaultConfigModule wiring.
package.json Bumps version to 16.3.0, adds packageManager, updates deps, moves Jest config to jest.config.ts.
jest.config.ts Adds Jest config file and coverage collection/exclusions.
eslint.config.mjs Disables certain TS lint rules for spec files.
coverage-target/coverage-summary.json Adds a coverage summary artifact file.
Dockerfile Adds HTTPS port env/expose, installs ca-certificates, updates pnpm, changes PG client install approach.
CHANGELOG.md Adds 16.3.0 release notes.
.npm-upgrade.json Removes previously ignored packages related to ESM constraints.
.github/workflows/test.yml Adds reusable PR test workflow with coverage artifact upload.
.github/workflows/deployment-master.yml Removes legacy deployment workflow.
.github/workflows/deployment-early-access.yml Removes legacy early-access deployment workflow.
.github/workflows/deployment-develop.yml Removes legacy develop deployment workflow.
.github/workflows/deploy.yml Adds consolidated deploy workflow with test gate, multi-arch build by digest, manifest publish, optional release/discord/sonar.
.github/workflows/delete_all_images.yml Bumps delete-package-versions action version.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +2 to +3
,"/home/alfagun74/git/phalcode/gamevault/gamevault-backend/src/modules/metadata/providers/igdb/igdb.metadata-provider.service.ts": {"lines":{"total":90,"covered":84,"skipped":0,"pct":93.33},"functions":{"total":30,"covered":30,"skipped":0,"pct":100},"statements":{"total":94,"covered":86,"skipped":0,"pct":91.48},"branches":{"total":45,"covered":25,"skipped":0,"pct":55.55}}
,"/home/alfagun74/git/phalcode/gamevault/gamevault-backend/src/modules/web-ui/web-ui.service.ts": {"lines":{"total":110,"covered":99,"skipped":0,"pct":90},"functions":{"total":18,"covered":16,"skipped":0,"pct":88.88},"statements":{"total":118,"covered":106,"skipped":0,"pct":89.83},"branches":{"total":39,"covered":37,"skipped":0,"pct":94.87}}
Copy link

Copilot AI Feb 15, 2026

Choose a reason for hiding this comment

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

This coverage summary JSON contains absolute filesystem paths (e.g., /home/.../src/...). That makes the artifact non-portable and can leak local directory structure. Consider excluding this from the repo (generate it in CI only) or rewriting keys to relative paths before committing.

Suggested change
,"/home/alfagun74/git/phalcode/gamevault/gamevault-backend/src/modules/metadata/providers/igdb/igdb.metadata-provider.service.ts": {"lines":{"total":90,"covered":84,"skipped":0,"pct":93.33},"functions":{"total":30,"covered":30,"skipped":0,"pct":100},"statements":{"total":94,"covered":86,"skipped":0,"pct":91.48},"branches":{"total":45,"covered":25,"skipped":0,"pct":55.55}}
,"/home/alfagun74/git/phalcode/gamevault/gamevault-backend/src/modules/web-ui/web-ui.service.ts": {"lines":{"total":110,"covered":99,"skipped":0,"pct":90},"functions":{"total":18,"covered":16,"skipped":0,"pct":88.88},"statements":{"total":118,"covered":106,"skipped":0,"pct":89.83},"branches":{"total":39,"covered":37,"skipped":0,"pct":94.87}}
,"src/modules/metadata/providers/igdb/igdb.metadata-provider.service.ts": {"lines":{"total":90,"covered":84,"skipped":0,"pct":93.33},"functions":{"total":30,"covered":30,"skipped":0,"pct":100},"statements":{"total":94,"covered":86,"skipped":0,"pct":91.48},"branches":{"total":45,"covered":25,"skipped":0,"pct":55.55}}
,"src/modules/web-ui/web-ui.service.ts": {"lines":{"total":110,"covered":99,"skipped":0,"pct":90},"functions":{"total":18,"covered":16,"skipped":0,"pct":88.88},"statements":{"total":118,"covered":106,"skipped":0,"pct":89.83},"branches":{"total":39,"covered":37,"skipped":0,"pct":94.87}}

Copilot uses AI. Check for mistakes.
@Alfagun74 Alfagun74 merged commit f95cc9f into master Feb 15, 2026
10 of 11 checks passed
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.

2 participants