Repository navigation
fix: sidebar detail pages, rulebook-only assistant, SkiaSharp images and startup retry - #252
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the initial when there is no picture Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…book New GET api/manual/games returns the ids of games with at least one manual; the list refreshes when a rulebook is uploaded or deleted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Card headers have one height so the price refresh button no longer pushes its title down, the in-collection card uses the same layout with the date in its header, the grid stays at four columns, the duplicate expansions card is gone, and prices use the same currency format as the current price. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Poster, facts and narrow cards sit in a sidebar from the lg breakpoint, the title, statistics and charts in the main column, so every block lines up. Below lg everything stacks in one column with the header first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A player shows avatar, name and win rate with the details in a tooltip; a session shows date, winner and winning score, and the full list is a link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…feats The sidebar shows earned out of total with a progress bar and the highest badge per type. The main column shows one tile per tiered badge type with its current level, the next goal and four level pips, and the one-off feats as icons that light up once earned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g the NuGet cache mount A cached restore layer with an emptied cache mount made publish fail with NETSDK1064; restoring in the publish step is a no-op when the packages are already there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…VEs until 2027-01-08 The app never uses the TIFF CCITT encoders or HistogramEqualization; the fix needs ImageSharp 4, which requires a Six Labors licence key at build time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EF's default Npgsql execution strategy wraps transient failures (connection refused, unknown host, "the database system is starting up") in an InvalidOperationException, so the wait loop's NpgsqlException filter never matched and the app crashed on a cold start whenever Postgres was not ready yet. Match on the base exception and report its message instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ImageSharp 3.1.12 carries three HIGH CVEs with no 3.x patch, and 4.x needs a Six Labors licence key at build time. SkiaSharp (MIT) needs no key: uploads and downloaded covers are identified with SKCodec, checked against the same pixel cap, decoded (first frame), stretched to 512x512 and written as WebP quality 80 through the existing stream overload of IDiskProvider. The Docker build keeps only the musl libSkiaSharp for the target architecture, the temporary .trivyignore.yaml is gone, and Renovate groups the SkiaSharp packages. TIFF, TGA, PBM and QOI uploads are now refused as unsupported formats. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
.NET Test Results 2 files 2 suites 17s ⏱️ Results for commit 5bc7eea. ♻️ This comment has been updated with latest results. |
sharp 0.35.5 fixes GHSA-wq5f-xc86-pv6w (bundled librsvg) and source-map-js 1.2.2 fixes GHSA-68fv-2mgg-jv7q; the docs audit fails on both. The client only carries source-map-js as a dev dependency but gets the same patch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
SummarySummary
CoverageBoardGameTracker.Api - 93.8%
BoardGameTracker.Common - 92%
BoardGameTracker.Core - 93.5%
Default - 40.6%
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



What
Follow-up to #246: UI fixes from testing, a sidebar layout for the game and player pages, the switch from ImageSharp to SkiaSharp, and a startup fix.
UI
GET /api/manual/games). It shows an empty state when there are none.BgtDetailLayout: a sidebar onlgand up, and on mobile the cards interleave viamax-lg:order-*. No breakpoints were changed.Images: ImageSharp → SkiaSharp
libSkiaSharpfor the target architecture. The portable publish ships every RID, about 476 MB..trivyignore.yamlfrom the commit before is deleted again. Renovate groups the SkiaSharp packages.Docker / startup
InvalidOperationException. Before, the app crashed on a cold start if Postgres was still starting. The bundled docker-compose was not affected because it waits forservice_healthy.How to test
dotnet test BoardGameTracker.Tests: 1983 tests pass, Release build with 0 warnings. New tests cover games with manuals, image identify/pixel-limit/not-an-image, the facts card, sidebar lists, achievement progress and select avatars.error.image.unsupported-format.Checklist
feat:,fix:,docs:,chore:, ...)boardgametracker.client/public/locales/<PackageReference>?packages.lock.jsonfiles are updated (dotnet restore)docs/are updated (nothing in the docs lists image formats or the changed pages)🤖 Generated with Claude Code