Skip to content

ci: move image-heavy scans off the pr path and harden workflows - #202

Merged
mregni merged 27 commits into
masterfrom
chore/ci-security-split
Aug 7, 2026
Merged

ci: move image-heavy scans off the pr path and harden workflows#202
mregni merged 27 commits into
masterfrom
chore/ci-security-split

Conversation

@mregni

@mregni mregni commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Why

Every PR push started 12 jobs including two full Docker image builds (~7m30s, security-bound). Two ZAP auth steps interpolated credentials straight into run: shell. The nightly ZAP job spidered a React SPA and therefore scanned almost nothing — and, as this branch discovered, had never actually completed a run on master.

PR pipeline: before → after

Workflow Jobs per PR push
pr.yml labeler, semantic title
ci.yml test + SonarCloud (version job folded in)
security.yml backend deps, frontend deps, gitleaks
codeql.yml csharp, js-ts, actions

Zero image builds on the PR path. The image-heavy scans moved to the nightly.

Nightly (security-full-scan.yml)

ZAP now runs as an OpenAPI-driven action-api-scan against an ephemeral Azure Container Apps deployment, gated by a pre-flight check that the served spec has a sane endpoint count, plus Docker Scout and an informational full dependency audit. The resource group is torn down unconditionally.

Getting this green took six follow-up commits: a mixed-case image tag, a missing packages:write, absent GHCR pull credentials in the Bicep template, and — the interesting one — Postgres had to become a sidecar in the app container, because ACA internal TCP ingress resolves DNS but never routes on a consumption environment, so the API crashed at startup Migrate().

Security fixes

All ${{ }} interpolation of secrets and step outputs is gone from every run: block in the repo. The nightly's JWT is charset-validated (^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$) before it reaches ZAP's cmd_options, so the one remaining interpolation cannot carry a quote, space, or shell metacharacter. aquasecurity/trivy-action is pinned off the mutable @master ref. CodeQL gains the security-extended suite.

Path filtering and required checks

ci.yml and security.yml no longer use paths-ignore. A workflow skipped by a path filter reports no status at all, so any required check it owns sits on "Expected" forever and blocks the merge. The alternative — a job-level change filter — was rejected because its failure mode is silently skipping real code changes while the required checks still report green. publish-container.yml keeps its filter; it runs on master pushes and owns no PR check.

Verification

actionlint is clean across all nine workflows. The nightly has been dispatched and completes end to end.

Follow-ups (not in this PR)

Two checks are red on every current PR and are deliberately not yet in the required set:

  • Frontend Dependency Scan — two real high-severity brace-expansion advisories reach production deps via @sentry/vite-plugin → @sentry/bundler-plugin-core → glob → minimatch. The existing pnpm override (brace-expansion@>=3.0.0 <5.0.7) no longer matches; the advisories need >=5.0.9. @sentry/vite-plugin is also a build-time tool sitting in dependencies, which is why --prod sees it at all.
  • Test and SonarCloud Analysis — fails at "End SonarCloud analysis", i.e. the SonarCloud quality gate itself (sonar.qualitygate.wait=true).

Once both are green they should join the required set.

mregni and others added 19 commits July 24, 2026 12:52
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GitHub expression interpolation inside run: blocks substitutes values
before bash parses the line, so credentials or outputs containing
quotes, dollars, or backticks break the script or execute as shell.
Pass values through env: and reference them as shell variables, build
the login JSON with jq, and validate the extracted JWT charset before
it is used anywhere downstream.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pnpm audit now gates on high severity in production dependencies only;
dev-tree advisories stay visible through Renovate and the nightly
informational audit. The NuGet check fails closed if restore or list
errors instead of reporting a false pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Docker Scout and ZAP both built the full image on every PR push
(~7m30s wall-clock). Trivy already gates CVEs on every master publish;
deep scanning now lives in the nightly workflow. The PR security
workflow keeps the three sub-minute checks: NuGet vulnerabilities,
pnpm audit, and Gitleaks.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The traditional spider discovers almost nothing on a client-rendered
SPA, so the full scan exercised only a fraction of the API. The scan
now imports swagger.json from the deployed instance and actively scans
every documented endpoint, gated on the spec actually being served.
The compose stack existed only for the deleted PR-time baseline scan.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Scout moves from the PR path to the nightly schedule, keeping the
Docker Hub login its CLI requires and the SARIF upload. The moderate
full-tree pnpm audit compensates for the PR gate narrowing to
high/prod without blocking anything.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The nightly has never passed its build step: github.repository is
mixed case and Docker rejects uppercase tags, the job lacked the
packages permission to push to GHCR, and the container app pulled the
image without registry credentials, which cannot work for the private
package the first push creates. Provenance is disabled because the
attestation manifest adds nothing to an ephemeral scan image.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PerGB2018 requires retentionInDays between 30 and 730; the workspace
is deleted with the resource group minutes later, so the default is
fine.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Each poll could hang for minutes against an unready ingress, so the
loop ran until the job timeout instead of failing in two minutes, and
teardown then destroyed all evidence. Polls now carry curl timeouts, a
failure-only step dumps container app status and logs before the
resource group is deleted, and the SARIF upload is skipped when the
scan never produced a report.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The classic ZAP scan actions emit html, json and md reports only;
SARIF export is an open upstream feature request, so this upload could
never fire. ZAP findings live in the run artifacts, and the Security
tab keeps Scout, Trivy and CodeQL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Internal TCP ingress between container apps resolves DNS but never
routes on a consumption environment, so the app could not reach
postgres and crashed during startup migrations. Postgres now runs as a
sidecar in the same container app and the app connects over localhost,
removing the cross-app networking dependency entirely.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… workflow

Completes the change started in ec41d32 for the one workflow it left
untouched. SONAR_TOKEN was interpolated directly into two run: blocks,
alongside eight version/repository template expansions. All six steps now
read their values from step-level env:.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…changes

The publish workflow was the last one without a concurrency group; it
publishes images and force-pushes tags, so runs queue rather than cancel.
paths-ignore now matches security.yml so a markdown-only push no longer
builds and releases a beta. trivy-action moves off the mutable @master
ref to v0.36.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A workflow skipped by paths-ignore reports no status at all, so any check
it owns sits on "Expected" forever and blocks the merge. With CI, the three
security scans and the three CodeQL jobs becoming required status checks on
master, these two workflows can no longer be path-filtered.

Reverses the PR-side filtering from 231ea35 and predates it in ci.yml. The
cost is a full run on docs-only PRs; the alternative is a job-level change
filter, whose failure mode is silently skipping real code changes while the
required checks still report green.

publish-container.yml keeps its paths-ignore: it runs on master pushes and
owns no PR check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…cancelled

GitHub keeps only one pending run per concurrency group: a newer arrival
cancels the older pending run even when cancel-in-progress is false. With a
single "Deploy" group, a manually dispatched stable release sitting behind an
in-progress build would be silently cancelled by the next push to master.

Separating push from workflow_dispatch keeps the newest-master-wins queueing
for pushes while a manual release can no longer be discarded. The two can now
overlap, which is safe: they publish disjoint tags, and only the stable run
creates releases and moves the vN tags.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mregni mregni closed this Aug 6, 2026
@mregni mregni reopened this Aug 6, 2026
ci.yml has built no image since the image-heavy scans moved off the PR path,
so REGISTRY and IMAGE_NAME were referenced nowhere in the file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mregni mregni closed this Aug 6, 2026
@mregni mregni reopened this Aug 6, 2026
PR #202 was opened during the 2026-08-06 Actions incident, which dropped its
pull_request events. Dropped events are not replayed and close/reopen did not
re-fire them, so this empty commit exists only to raise a synchronize event.
Safe to drop; it disappears on a squash merge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Comment thread .github/workflows/publish-container.yml Fixed
Comment thread .github/workflows/publish-container.yml Fixed
Comment thread .github/workflows/publish-container.yml Fixed
Comment thread .github/workflows/security-full-scan.yml Fixed
Comment thread .github/workflows/security-full-scan.yml Fixed
Comment thread .github/workflows/security-full-scan.yml Fixed
Comment thread .github/workflows/security-full-scan.yml Fixed
Comment thread .github/workflows/security-full-scan.yml Fixed
Comment thread .github/workflows/security-full-scan.yml Fixed
Comment thread .github/workflows/security-full-scan.yml Fixed
boardgametracker.client.esproj is in the solution and uses packages.config, so
dotnet list package --vulnerable exits non-zero even when every project reports
no vulnerable packages. The pipefail added in d4e1a32 propagated that through
tee and killed the step before the grep ran, so the scan failed on every PR.

Fail-closed behaviour is kept and made explicit: a run that produces no
verdict at all is still an error, rather than being inferred from an exit code
the command uses for an unrelated condition.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added size/L and removed size/L labels Aug 6, 2026
Resolves the CodeQL "Unpinned tag for a non-immutable Action" alerts raised on
this PR. A tag is a mutable pointer, so a compromised or retagged release runs
with whatever permissions the job holds; a commit sha cannot be moved.

All 19 third-party actions are pinned repo-wide rather than only in the two
files CodeQL flagged, since it flags changed files and the rest would surface
one at a time as they are touched. Actions under actions/ and github/ are left
on tags, matching the rule's own trust model.

Each pin keeps a version marker so the intended release stays readable, and
renovate gains helpers:pinGitHubActionDigests so new actions are pinned on
arrival and existing digests keep getting updates.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added size/L and removed size/L labels Aug 6, 2026
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

.NET Test Results

1 305 tests   1 305 ✅  13s ⏱️
    1 suites      0 💤
    1 files        0 ❌

Results for commit a1b9fcd.

♻️ This comment has been updated with latest results.

Completes the pinning started in 79a0279. Actions under actions/ and github/
were left on tags because CodeQL's trust model exempts them, but a mutable ref
is a mutable ref: the exemption reflects who owns the repo, not whether the
pointer can move.

Every uses: in the repo now resolves to an immutable commit, 99 in total, each
keeping its version marker. The three codeql-action subpaths share one sha
because they ship from a single repository.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added size/L and removed size/L labels Aug 6, 2026
dotnet tool update with no --version always installed the latest scanner, so
an upstream release could change behaviour with no commit here. That is how
SonarCloud analysis broke on 2026-05-21 without a repo change: a newer scanner
moved the quality gate poll to api.sonarcloud.io, where the current token is
not authorised.

The version is now declared once per job and reused in the cache key, because
a key that ignores the version would restore an older scanner on a cache hit
and silently defeat the pin. restore-keys is dropped for the same reason: a
prefix match would return the previous version's cache.

Pinning does not fix the broken token; it makes the next change deliberate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added size/L and removed size/L labels Aug 7, 2026
Both values are already public: the README badges link to
sonarcloud.io/summary/new_code?id=mregni_BoardGameTracker, and the uping
organization is visible on its Docker Hub badge. Holding them as secrets adds
no protection and masks them in logs, which is why a failing analysis reports
"Downloading cache. Project key: ***" and cannot be diagnosed from the run.

Only SONAR_TOKEN stays a secret. This also removes the key and organization as
variables when investigating the current authorisation failure at the quality
gate poll.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added size/L and removed size/L labels Aug 7, 2026
The analysis was never broken. SonarCloud ingests the report, evaluates the
gate and posts a "Quality Gate passed" check from its own app within seconds
of upload; on the run that prompted this, upload and that check both landed at
00:42:20. The only failing call was the scanner polling api.sonarcloud.io for
a verdict already being delivered, which returned "Not authorized or project
not found" under two different tokens and with the key and organization set to
verified literals.

Dropping sonar.qualitygate.wait removes the duplicate. The gate is still
enforced, by the SonarCloud Code Analysis check, which links straight to the
per-PR dashboard.

publish-container.yml loses its continue-on-error on the same step. It existed
to tolerate this failure, and it is why a broken step went unnoticed on master
for months.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added size/L and removed size/L labels Aug 7, 2026
@sonarqubecloud

sonarqubecloud Bot commented Aug 7, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

Summary

Summary
Generated on: 08/07/2026 - 06:44:20
Parser: MultiReport (1x LCov, 2x OpenCover)
Assemblies: 4
Classes: 541
Files: 500
Line coverage: 44.8% (4064 of 9056)
Covered lines: 4064
Uncovered lines: 4992
Coverable lines: 9056
Total lines: 27186
Branch coverage: 40.6% (1145 of 2814)
Covered branches: 1145
Total branches: 2814
Method coverage: Feature is only available for sponsors
Tag: 334_31154726930

Coverage

BoardGameTracker.Api - 75.3%
Name Line Branch
BoardGameTracker.Api 75.3% 69%
BoardGameTracker.Api.Controllers.Admin.OidcProvidersController 0%
BoardGameTracker.Api.Controllers.Admin.UsersController 0% 0%
BoardGameTracker.Api.Controllers.AuthController 82.7% 50%
BoardGameTracker.Api.Controllers.BadgeController 100%
BoardGameTracker.Api.Controllers.CompareController 100%
BoardGameTracker.Api.Controllers.CountController 100%
BoardGameTracker.Api.Controllers.DashboardController 100%
BoardGameTracker.Api.Controllers.GameController 91.3% 100%
BoardGameTracker.Api.Controllers.GameNightController 100% 100%
BoardGameTracker.Api.Controllers.ImageController 100%
BoardGameTracker.Api.Controllers.LoanController 100% 100%
BoardGameTracker.Api.Controllers.LocationController 100% 100%
BoardGameTracker.Api.Controllers.OidcController 0% 0%
BoardGameTracker.Api.Controllers.PlayerController 100% 100%
BoardGameTracker.Api.Controllers.SessionController 100% 100%
BoardGameTracker.Api.Controllers.SettingsController 100%
BoardGameTracker.Api.Controllers.UpdateController 100%
BoardGameTracker.Api.Infrastructure.AuthDisabledExtensions 100% 100%
BoardGameTracker.Api.Infrastructure.AuthDisabledFilter 100% 83.3%
BoardGameTracker.Api.Infrastructure.AuthDisabledMiddleware 100% 75%
BoardGameTracker.Api.Infrastructure.GlobalExceptionHandler 96.4% 93.7%
BoardGameTracker.Api.Infrastructure.UtcDateTimeConverter 0% 0%
BoardGameTracker.Api.Infrastructure.UtcNullableDateTimeConverter 0% 0%
BoardGameTracker.Api.Infrastructure.ValidateIdFilter 100% 100%
BoardGameTracker.Common - 72%
Name Line Branch
BoardGameTracker.Common 72% 59.2%
BoardGameTracker.Common.Configuration.ConfigDefault 100%
BoardGameTracker.Common.Configuration.ConfigDefaults 100%
BoardGameTracker.Common.Constants 100%
BoardGameTracker.Common.DTOs.Auth.AdminUpdateUserRequest 0%
BoardGameTracker.Common.DTOs.Auth.AuthorizationUrlResponse 0%
BoardGameTracker.Common.DTOs.Auth.AuthStatusResponse 100%
BoardGameTracker.Common.DTOs.Auth.ChangePasswordRequest 100%
BoardGameTracker.Common.DTOs.Auth.CreateOidcProviderRequest 0%
BoardGameTracker.Common.DTOs.Auth.ExternalLoginDto 0%
BoardGameTracker.Common.DTOs.Auth.LoginRequest 100%
BoardGameTracker.Common.DTOs.Auth.LoginResponse 100%
BoardGameTracker.Common.DTOs.Auth.LogoutRequest 100%
BoardGameTracker.Common.DTOs.Auth.OidcCallbackRequest 0%
BoardGameTracker.Common.DTOs.Auth.OidcProviderDto 0%
BoardGameTracker.Common.DTOs.Auth.OidcProviderInfo 0%
BoardGameTracker.Common.DTOs.Auth.OidcProviderListDto 0%
BoardGameTracker.Common.DTOs.Auth.ProfileResponse 66.6%
BoardGameTracker.Common.DTOs.Auth.RefreshTokenRequest 100%
BoardGameTracker.Common.DTOs.Auth.RegisterRequest 100%
BoardGameTracker.Common.DTOs.Auth.ResetPasswordResponse 100%
BoardGameTracker.Common.DTOs.Auth.UpdateOidcProviderRequest 0%
BoardGameTracker.Common.DTOs.Auth.UpdateProfileRequest 100%
BoardGameTracker.Common.DTOs.Auth.UpdateUserRoleRequest 0%
BoardGameTracker.Common.DTOs.Auth.UserDto 66.6%
BoardGameTracker.Common.DTOs.Auth.UserInfo 60%
BoardGameTracker.Common.DTOs.BadgeDto 100%
BoardGameTracker.Common.DTOs.BggConfigStatusDto 100%
BoardGameTracker.Common.DTOs.Commands.CreateGameCommand 100%
BoardGameTracker.Common.DTOs.Commands.CreateGameNightCommand 100%
BoardGameTracker.Common.DTOs.Commands.CreateLoanCommand 100%
BoardGameTracker.Common.DTOs.Commands.CreateLocationCommand 100%
BoardGameTracker.Common.DTOs.Commands.CreatePlayerCommand 100%
BoardGameTracker.Common.DTOs.Commands.CreatePlayerSessionCommand 100%
BoardGameTracker.Common.DTOs.Commands.CreateSessionCommand 100%
BoardGameTracker.Common.DTOs.Commands.ImportBggGamesCommand 100%
BoardGameTracker.Common.DTOs.Commands.ReturnLoanCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdateGameCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdateGameExpansionsCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdateGameNightCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdateLoanCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdateLocationCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdatePlayerCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdateRsvpCommand 100%
BoardGameTracker.Common.DTOs.Commands.UpdateSessionCommand 100%
BoardGameTracker.Common.DTOs.Commands.UploadImageCommand 100%
BoardGameTracker.Common.DTOs.DashboardStatisticsDto 100%
BoardGameTracker.Common.DTOs.DashboardTopPlayerDto 100%
BoardGameTracker.Common.DTOs.ExpansionDto 100%
BoardGameTracker.Common.DTOs.GameDto 100%
BoardGameTracker.Common.DTOs.GameLinkDto 0%
BoardGameTracker.Common.DTOs.GameNightDto 100%
BoardGameTracker.Common.DTOs.GameNightRsvpDto 100%
BoardGameTracker.Common.DTOs.GamePersonDto 0%
BoardGameTracker.Common.DTOs.GameStatisticsResponse 100%
BoardGameTracker.Common.DTOs.KeyValuePairDto`1 100%
BoardGameTracker.Common.DTOs.LoanDto 85.7%
BoardGameTracker.Common.DTOs.LocationDto 100%
BoardGameTracker.Common.DTOs.MostPlayedGameDto 100%
BoardGameTracker.Common.DTOs.PlayerDto 100%
BoardGameTracker.Common.DTOs.PlayerSessionDto 0%
BoardGameTracker.Common.DTOs.RecentActivityDto 100%
BoardGameTracker.Common.DTOs.RecentGameDto 100%
BoardGameTracker.Common.DTOs.SessionDto 100%
BoardGameTracker.Common.DTOs.ShameDto 0%
BoardGameTracker.Common.DTOs.ShameStatisticsDto 0%
BoardGameTracker.Common.DTOs.TopPlayerDto 0% 0%
BoardGameTracker.Common.DTOs.UIEnvironmentDto 100%
BoardGameTracker.Common.DTOs.UIResourceDto 100%
BoardGameTracker.Common.DTOs.UpdateSettingsDto 0%
BoardGameTracker.Common.DTOs.UpdateStatusDto 100%
BoardGameTracker.Common.Exceptions.BggFeatureDisabledException 100%
BoardGameTracker.Common.Exceptions.ConfigMissingException 0%
BoardGameTracker.Common.Exceptions.DomainException 100%
BoardGameTracker.Common.Exceptions.EntityNotFoundException 100%
BoardGameTracker.Common.Exceptions.ServiceNotResolvedException 0%
BoardGameTracker.Common.Exceptions.ValidationException 100%
BoardGameTracker.Common.Extensions.AuthDtoExtensions 33.3% 50%
BoardGameTracker.Common.Extensions.BadgeDtoExtensions 100%
BoardGameTracker.Common.Extensions.DashboardDtoExtensions 100% 87.5%
BoardGameTracker.Common.Extensions.DbSetExtensions 0% 0%
BoardGameTracker.Common.Extensions.ExpansionDtoExtensions 100%
BoardGameTracker.Common.Extensions.GameDtoExtensions 87% 50%
BoardGameTracker.Common.Extensions.GameNightDtoExtensions 93.1%
BoardGameTracker.Common.Extensions.ListExtensions 100% 100%
BoardGameTracker.Common.Extensions.LoanDtoExtensions 100%
BoardGameTracker.Common.Extensions.LocationDtoExtensions 100% 100%
BoardGameTracker.Common.Extensions.LogLevelExtensions 100% 100%
BoardGameTracker.Common.Extensions.PlayerDtoExtensions 94.4% 75%
BoardGameTracker.Common.Extensions.PlayerSessionDtoExtensions 0%
BoardGameTracker.Common.Extensions.SessionDtoExtensions 88.2%
BoardGameTracker.Common.Extensions.ShameDtoExtensions 0%
BoardGameTracker.Common.Extensions.StatusExtensions 100% 100%
BoardGameTracker.Common.Extensions.StringExtensions 100% 100%
BoardGameTracker.Common.Extensions.UpdateStatusDtoExtensions 100%
BoardGameTracker.Common.Extensions.UploadFileTypeExtension 100% 100%
BoardGameTracker.Common.Extensions.VersionExtensions 100% 75%
BoardGameTracker.Common.Extensions.WebHostBuilderExtensions 0% 0%
BoardGameTracker.Common.Helpers.PathHelper 100%
BoardGameTracker.Common.Models.Bgg.BggImportGame 100%
BoardGameTracker.Common.Models.Bgg.BggImportResult 100%
BoardGameTracker.Common.Models.Bgg.BggSearch 100%
BoardGameTracker.Common.Models.Charts.GameStateChart 100%
BoardGameTracker.Common.Models.Charts.PlayByDay 100%
BoardGameTracker.Common.Models.Charts.PlayerCount 0%
BoardGameTracker.Common.Models.Charts.ScoreRank 0% 0%
BoardGameTracker.Common.Models.Charts.XValue 0%
BoardGameTracker.Common.Models.Compare.ClosestGame 100%
BoardGameTracker.Common.Models.Compare.FirstGameTogether 100%
BoardGameTracker.Common.Models.Compare.LastWonGame 100%
BoardGameTracker.Common.Models.Compare.MostWonGame 100%
BoardGameTracker.Common.Models.Compare.PreferredGame 100%
BoardGameTracker.Common.Models.CompareResultDto 100%
BoardGameTracker.Common.Models.CompareRow`1 100%
BoardGameTracker.Common.Models.DockerHub.DockerHubManifest 0%
BoardGameTracker.Common.Models.DockerHub.DockerHubManifestResponse 0%
BoardGameTracker.Common.Models.DockerHub.DockerHubPlatform 0%
BoardGameTracker.Common.Models.DockerHub.DockerHubTag 0%
BoardGameTracker.Common.Models.DockerHub.DockerHubTagsResponse 0%
BoardGameTracker.Common.Models.ExpansionData 100%
BoardGameTracker.Common.Models.GameStatistics 100%
BoardGameTracker.Common.Models.ImportGame 100%
BoardGameTracker.Common.Models.MostPlayedGame 100%
BoardGameTracker.Common.Models.MostWinningPlayer 100%
BoardGameTracker.Common.Models.PlayerComparison 0%
BoardGameTracker.Common.Models.PlayerStatistics 100%
BoardGameTracker.Common.Models.ShameGame 66.6%
BoardGameTracker.Common.Models.ShameStatistics 100%
BoardGameTracker.Common.Models.Updates.UpdateSettings 0%
BoardGameTracker.Common.Models.Updates.UpdateStatus 100%
BoardGameTracker.Common.ValueObjects.GameScore 100%
BoardGameTracker.Common.ValueObjects.PlayerCountRange 90.9% 50%
BoardGameTracker.Common.ValueObjects.PlayerName 91.6% 75%
BoardGameTracker.Common.ValueObjects.PlayTimeRange 76.9% 50%
BoardGameTracker.Common.ValueObjects.Price 75%
BoardGameTracker.Common.ValueObjects.Rating 100%
BoardGameTracker.Common.ValueObjects.SessionTimeRange 100% 100%
BoardGameTracker.Common.ValueObjects.Weight 100%
BoardGameTracker.Core - 50.9%
Name Line Branch
BoardGameTracker.Core 50.9% 60.2%
BoardGameTracker.Core.Auth.AuthService 97.2% 95.2%
BoardGameTracker.Core.Auth.DbSeeder 0% 0%
BoardGameTracker.Core.Auth.OidcProviderService 100% 100%
BoardGameTracker.Core.Auth.OidcService 0% 0%
BoardGameTracker.Core.Auth.RefreshTokenCleanupService 63.3% 75%
BoardGameTracker.Core.Auth.TokenService 85.8% 63.6%
BoardGameTracker.Core.Auth.UserAdminService 82.7% 80.5%
BoardGameTracker.Core.Badges.BadgeEvaluators.CloseLossBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.CloseWinBadgeEvaluator 91.4% 87.5%
BoardGameTracker.Core.Badges.BadgeEvaluators.ConsistentScheduleBadgeEvaluat
or
100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.DifferentGameBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.DurationBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.FirstTryBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.LearningCurveBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.MarathonRunnerBadgeEvaluator 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.MonthlyGoalBadgeEvaluator 0%
BoardGameTracker.Core.Badges.BadgeEvaluators.SessionsBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.SessionWinEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.SocialPlayerBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.SoloSpecialistBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.WinningStreakBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeEvaluators.WinPercentageBadgeEvaluator 100% 100%
BoardGameTracker.Core.Badges.BadgeLevelProgressionPolicy 100% 100%
BoardGameTracker.Core.Badges.BadgeProgressionService 95.5% 93.7%
BoardGameTracker.Core.Badges.BadgeRepository 0% 0%
BoardGameTracker.Core.Badges.BadgeService 100% 100%
BoardGameTracker.Core.Common.DateTimeProvider 100% 100%
BoardGameTracker.Core.Common.TypeConverter 90.4% 85.7%
BoardGameTracker.Core.Compares.CompareRepository 0% 0%
BoardGameTracker.Core.Compares.CompareService 100% 100%
BoardGameTracker.Core.Configuration.ConfigRepository 0% 0%
BoardGameTracker.Core.Configuration.DbConnectionProvider 0% 0%
BoardGameTracker.Core.Configuration.EnvironmentProvider 100% 100%
BoardGameTracker.Core.Dashboard.DashboardService 100%
BoardGameTracker.Core.Disk.DiskProvider 66.6% 100%
BoardGameTracker.Core.Extensions.ServiceCollectionExtensions 0% 0%
BoardGameTracker.Core.GameNights.GameNightRepository 0%
BoardGameTracker.Core.GameNights.GameNightService 100% 100%
BoardGameTracker.Core.Games.BggImportService 100% 87.5%
BoardGameTracker.Core.Games.Factories.GameFactory 100% 84.3%
BoardGameTracker.Core.Games.GameChartService 47.7% 50%
BoardGameTracker.Core.Games.GameRepository 0% 0%
BoardGameTracker.Core.Games.GameService 100% 89.4%
BoardGameTracker.Core.Games.GameSessionRepository 0% 0%
BoardGameTracker.Core.Games.GameStatisticsRepository 0% 0%
BoardGameTracker.Core.Games.GameStatisticsService 100% 100%
BoardGameTracker.Core.Games.ShameService 100% 100%
BoardGameTracker.Core.Images.ImageService 60.9% 83.3%
BoardGameTracker.Core.Languages.LanguageRepository 0%
BoardGameTracker.Core.Languages.LanguageService 100%
BoardGameTracker.Core.Loans.LoanRepository 0%
BoardGameTracker.Core.Loans.LoanService 100% 100%
BoardGameTracker.Core.Locations.LocationRepository 0%
BoardGameTracker.Core.Locations.LocationService 90.2% 100%
BoardGameTracker.Core.Players.PlayerRepository 0%
BoardGameTracker.Core.Players.PlayerService 100% 100%
BoardGameTracker.Core.Players.PlayerStatisticsService 100%
BoardGameTracker.Core.Sessions.SessionRepository 0% 0%
BoardGameTracker.Core.Sessions.SessionService 89.2% 86.6%
BoardGameTracker.Core.Settings.SettingsService 97.9% 81.2%
BoardGameTracker.Core.Updates.UpdateCheckBackgroundService 21.5% 0%
BoardGameTracker.Core.Updates.UpdateService 29.9% 25%
System.Text.RegularExpressions.Generated 0% 0%
Default - 24.2%
Name Line Branch
Default 24.2% 28.8%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtAchievement/BgtAchievement.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtAvatar/BgtAvatar.tsx
72.7% 66.6%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtAvatar/BgtPlayerAvatar.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtAvatar/PlayerSessionAvatars.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtBadge/BgtBadge.tsx
72.7% 50%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtButton/BgtBigButton.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtButton/BgtButton.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtButton/BgtEditDeleteButtons.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtCard/BgtCard.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtCard/BgtChartCard.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtCard/BgtMostWinnerCard.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtCard/RecentActivityCard.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtCharts/BgtBarChart.tsx
91.6% 71.4%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtCharts/BgtPieChart.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtDataGuard/BgtDataGuard.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtDialog/BgtDialog.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtDialog/index.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtCheckbox.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtCheckboxList.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtDatePicker.tsx
94.1% 92.8%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtDateTimePicker.tsx
77.2% 76.4%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtFieldLabel.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtFormErrors.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtImageSelector.tsx
82.8% 76.4%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtInputField.tsx
90.9% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtPlayerSelector.tsx
91.6% 90.9%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtSelect.tsx
70.7% 68.9%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtSimpleCheckbox.tsx
100% 80%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtSimpleInputField.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtSimpleSelect.tsx
64.7% 64.2%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtSimpleSwitch.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtSwitch.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/BgtTextArea.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/FormFieldWrapper.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/index.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtForm/SearchInputField.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtHeading/BgtHeading.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtIcon/BgtIcon.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtIconButton/BgtIconButton.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtImageCard/BgtImageCard.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtLayout/BgtCardList.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtLayout/BgtEmptyPage.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtLayout/BgtEmptyState.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtLayout/BgtPage.tsx
91.6% 66.6%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtLayout/BgtPageContent.tsx
100% 71.4%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtLayout/BgtPageHeader.tsx
100% 94.1%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtLoadingSpinner/BgtLoadingSpinner.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtMenu/BgtMenuItem.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtMenu/BgtMenuLogo.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtStatistic/BgtFancyTextStatistic.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtStatistic/BgtTextStatistic.tsx
87.5% 88.2%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtStatus/BgtStatus.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtTable/BgtDataTable.tsx
100% 95.4%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtTable/BgtPaging.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtTable/BgtTable.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/BgtText/BgtText.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/ErrorBoundary/ErrorFallback.tsx
100% 85.7%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/components/NotFound/NotFound.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/config/sonner.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/form.tsx
14.2%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/useAuth.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/useDebounce.ts
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/useFilteredList.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/useInfiniteScroll.ts
50% 16.6%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/useModalState.ts
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/useMultiQuery.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/usePermissions.ts
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/hooks/useQueryInvalidator.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Auth/Auth.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Badge/Badge.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Charts/PieChartDatum.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Common/Actions.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Common/ApiError.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Common/BgtSelectItem.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Common/FailResult.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Common/KeyValuePair.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Common/ModalProps.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Compare/CompareResult.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/constants.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Dashboard/DashboardStatistics.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/GameNight/GameNight.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/BggImportResults.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/BggSearch.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/CreateGame.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/Expansion.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/ExpansionLink.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/Game.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/GameState.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/GameStatistics.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/GameType.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/PersonType.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/Shame.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Games/ShameStatistics.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Images/ImageUpload.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/index.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Loan/CreateLoan.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Loan/Loan.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Location/CreateLocation.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Location/Location.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Menu/MenuItem.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Player/Player.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Player/PlayerStatistics.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Session/CreateSession.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Session/PlayerSession.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Session/Session.tsx
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Settings/BggConfigStatus.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Settings/Environment.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Settings/Language.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Settings/Settings.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/models/Settings/VersionInfo.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/react-query.d.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/__root.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare/-components/RsvpEventDetails.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare/-components/RsvpResponseForm.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare/-components/RsvpSuccessView.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare/-hooks/useRsvpData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare/auth-callback.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare/login.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/_bare/rsvp.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/BgtPoster.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/BottomNav.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/dashboard/GameStateChart.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/dashboard/MostPlayedDashboardGames.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/dashboard/RecentActivity.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/dashboard/RecentAddedGames.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/dashboard/SessionsByDay.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/dashboard/TopPlayers.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/Sidebar.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-components/VersionCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-hooks/useDashboardData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-hooks/useElementSize.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-hooks/useGameById.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-hooks/useMenuInfo.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-hooks/usePlayerById.ts
10% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-hooks/useToasts.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/-modals/BgtDeleteModal.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-components/CompareCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-components/CompareEmptyState.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-components/CompareSummaryStats.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-components/HeadToHead.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-components/PlayerAvatarWithCrown.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-components/PlayerSelector.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-components/PlayerStatsSection.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-hooks/useCompareData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/-utils/compareUtils.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/compare/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/FilterTabs.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/GameNightActions.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/GameNightCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/GameNightForm.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/MultiSelectField.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/NoGameNights.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/RsvpSection.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/RsvpStatBadge.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-components/RsvpStatusButton.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-hooks/useGameNightActions.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-hooks/useGameNightData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-hooks/useGameNightModals.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-modals/CreateGameNightModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-modals/EditGameNightModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/-modals/ManageRSVPsModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/game-nights/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/ExpansionsCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameDetailEmptyState.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameForm.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameFormBasicFields.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameFormPlayerFields.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameFormTimeFields.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameHeader.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GamesFilters.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameStaticSection.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/GameStatisticsGrid.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/PlayerCountChartCard.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/RecentSessionsCard.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/ScoringResultsCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/SessionCardItem.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/SessionCountChartCard.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-components/TopPlayersCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useBggGameModal.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useExpansionSelectorModal.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useGameActions.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useGameData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useGameForm.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useGameModals.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useGamesData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useGameSessionsData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useImageUpload.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useNewGame.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-hooks/useUpdateGame.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-modals/CreateGameModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-modals/ExpansionSelectorModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-utils/gameColorMappings.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-utils/gameDataTransformers.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/-utils/gameFormOpts.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/$gameId_.sessions.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/$gameId_.update.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/$gameId.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/bgg.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/import/-hooks/useList.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/import/list_.$username.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/import/start.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/games/new.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/loans/-components/LoanCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/loans/-hooks/useLoanActions.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/loans/-hooks/useLoanModels.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/loans/-hooks/useLoans.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/loans/-hooks/useNewLoanModal.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/loans/-modals/NewLoanModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/loans/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/locations/-hooks/useLocationModal.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/locations/-hooks/useLocationModals.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/locations/-hooks/useLocationsData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/locations/-modals/EditLocationModal.tsx
100% 75%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/locations/-modals/NewLocationModal.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/locations/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/MostPlayedGamesCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/PlayerAchievementsCard.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/PlayerBadgeContainer.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/PlayerHeader.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/PlayerHeroSection.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/PlayerSessionCardItem.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/PlayerStatisticsGrid.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/PlayerWinRecordCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-components/RecentPlayerSessionsCard.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/useBadgeEarnedStatus.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/useBadgeProcessing.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/usePlayerActions.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/usePlayerData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/usePlayerModal.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/usePlayerModals.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/usePlayersData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-hooks/usePlayerSessionData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-modals/CreatePlayerModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-modals/EditPlayerModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/-types/playerTypes.ts
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/$playerId_.sessions.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/$playerId.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/players/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-components/SessionExpansionSelector.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-components/SessionForm.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-components/SessionFormFields.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-components/SessionPlayerManager.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-hooks/useNewSessionData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-hooks/useNewSessionWithGameData.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-hooks/useSessionForm.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-hooks/useSessionFormState.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-hooks/useUpdateSessionData.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-modals/CreateSessionPlayerModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-modals/UpdateSessionPlayerModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/-utils/sessionFormOpts.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/new_.$gameId.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/new.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/sessions/update_.$sessionId.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/AccountSettings.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/AdvancedSettings.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/BggSettings.tsx
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/GameNightsSettings.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/GeneralSettings.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/SettingsSection.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/SettingsSidebar.tsx
92.8% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/SettingsToggle.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-components/ShelfOfShameSettings.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-hooks/useAccountData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-hooks/useSettingsData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-modals/ChangePasswordModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-modals/CreateUserModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-modals/EditUserModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-modals/TempPasswordModal.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/-utils/settingsFormOpts.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/settings/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/shames/-components/NoShames.tsx
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/shames/-components/ShameGame.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/shames/-hooks/useShameData.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/routes/shames/index.tsx
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/authService.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/badgeService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/compareService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/countService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/dashboardService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/gameNightService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/gameService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/imageService.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/loanService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/locationService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/playerService.ts
38%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/auth.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/basdges.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/compare.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/count.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/dashboard.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/gameNights.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/games.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/invalidations.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/loans.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/locations.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/players.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/queryFactory.ts
50%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/sessions.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/queries/settings.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/sessionService.ts
0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/services/settingsService.ts
37.5%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/test/test-utils.tsx
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/apiUrl.ts
100% 50%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/axiosInstance.ts
5.4% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/dateUtils.ts
96.3% 92.4%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/formUtils.ts
100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/i18n.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/ItemStateUtils.ts
100% 100%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/localeUtils.ts
100% 70%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/numberUtils.ts
100% 88.8%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/routeSchemas.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/sentry.ts
0% 0%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/stringUtils.ts
100% 93.7%
/home/runner/work/BoardGameTracker/BoardGameTracker/boardgametracker.client
/src/utils/zodValidator.ts
0% 0%

@mregni
mregni merged commit 3f174df into master Aug 7, 2026
11 of 12 checks passed
@mregni
mregni deleted the chore/ci-security-split branch August 7, 2026 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants