diff --git a/.gitea/workflows/public-validation.yml b/.gitea/workflows/public-validation.yml index 561ca1f..8c9e842 100644 --- a/.gitea/workflows/public-validation.yml +++ b/.gitea/workflows/public-validation.yml @@ -11,7 +11,7 @@ jobs: source: name: source if: ${{ gitea.event_name != 'pull_request' || gitea.event.pull_request.head.repo.full_name == gitea.repository }} - runs-on: ubuntu-latest + runs-on: linux-validation timeout-minutes: 45 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 diff --git a/PUBLIC_SOURCE_MANIFEST.json b/PUBLIC_SOURCE_MANIFEST.json index 874cac7..6e4d870 100644 --- a/PUBLIC_SOURCE_MANIFEST.json +++ b/PUBLIC_SOURCE_MANIFEST.json @@ -1,47 +1,47 @@ { "schemaVersion": 1, - "sourceRevision": "b6c55f1f2293ef8df2ea6665bff6868ca8d0ddca", - "generatedAt": "2026-09-03T00:08:10.625Z", + "sourceRevision": "781315f3f71031995159287f425aeac47a77515b", + "generatedAt": "2026-09-30T00:23:00.486Z", "files": [ { "path": ".dockerignore", - "bytes": 811, - "sha256": "5532e637dfc7a405f5e67fdb45ca3293335dd03817ba75c5c8ea609b21170ad2" + "bytes": 772, + "sha256": "8ad041f92f13108fe454beda9bf6d0a3459c45027fe4051d19dac3ac45932820" }, { "path": ".gitattributes", - "bytes": 125, - "sha256": "c3a787c6a4fdb24dfb1dccad62ba6d612e9f0631b5d4f1dc62f89d4dedf738f7" + "bytes": 119, + "sha256": "906957aae137efc8b8da1bd4d1ec42c2e2acab4a6ad6b78da73c95908f0dd565" }, { "path": ".gitea/workflows/public-validation.yml", - "bytes": 1214, - "sha256": "ba410837830f434eb9499afacbc035b2aefbb46dd214c9ff3a77be547734eca2" + "bytes": 1217, + "sha256": "f786fc3ddb9c6aedcb278cdd7c47f550878a782dcf325dd6639c5d664995de78" }, { "path": ".gitignore", - "bytes": 424, - "sha256": "6c1242270a5e78722233abea2b1560e7114df9ea05706c25ba102d8bb1e1d42c" + "bytes": 401, + "sha256": "a0b1e9f0313ebff401c77550ff2a7b857655376d9715e252fd0067c6420d6ec4" }, { "path": ".gitleaks.toml", - "bytes": 164, - "sha256": "0aca986e058352ed5bffdf12a43ea75a35dddbf2143a7a1e99dcc9c291677dee" + "bytes": 158, + "sha256": "18baf37455b77004cb91375fe708669e9140b96078f464b2815544f5a959e3ad" }, { "path": "CHANGELOG.md", - "bytes": 62047, - "sha256": "f5307e8e4974e30b7fb7881d809fca1f7671fc9392deb9d03f556b9cad5736c2" + "bytes": 61406, + "sha256": "7e81114ea2361f9bb4fd2100128ba87ac1bf2f6edd5846386f4360479995a63c" }, { "path": "CONTRIBUTING.md", - "bytes": 833, - "sha256": "b043333ffc2181745f4a12937f0d9d879b1573186bcdf3e008f94f4c6cfa010e" + "bytes": 821, + "sha256": "3e935e5e3b1727af8ca3a7f3bec3f877c339ffad89fe214ec4b05a2d6c0c6d3d" }, { "path": "Directory.Build.props", - "bytes": 719, - "sha256": "ca93cdfe1c8abc15ca48901ddaff178676176fc08cc910d1fb65b0408c14d039" + "bytes": 704, + "sha256": "af25c11688fd08e4f9400cb982daef7296e068658d1950b6a221607932c2e76b" }, { "path": "Dockerfile", @@ -65,48 +65,48 @@ }, { "path": "LICENSE", - "bytes": 35186, - "sha256": "30226ff1d6775ea93c4b1dbcc5fe8b846f0e09d27fd03da0b6c599a15b017e55" + "bytes": 34524, + "sha256": "e9df4c4e4e64b8168a71c3c67668dcffabbe8fca11d4ac4a7d5482562cd1679c" }, { "path": "Ludarium.slnx", - "bytes": 853, - "sha256": "f5abe846759240918eaa9b11f321c974f3f75f53c0e81f5dde53628e97ed88e1" + "bytes": 837, + "sha256": "b56526f38d1092f303fa6f31e809e92c5c88be7dd0be78c090aee646df412d5d" }, { "path": "NuGet.config", - "bytes": 224, - "sha256": "2a60d41e8c9c839a51092416c96e70e0dbff10afe3022a9c063ccb4eb9aacdee" + "bytes": 217, + "sha256": "f545a7e2ea14ac53cdfb91217cae67b8ff14275313f6298f9a3331d205b6c948" }, { "path": "README.md", - "bytes": 4838, - "sha256": "8a2b5a063881b8e4b9519ef7a5403b2124007030e2c8ea2df82ed02fb4ae79fa" + "bytes": 6113, + "sha256": "3829463241e65c2aa5345017e04ca85ecb03dd910e3d507972926f16ff6db05a" }, { "path": "SECURITY.md", - "bytes": 1750, - "sha256": "8d08b7b9e963347c6b12c5f2c311f0b816290b8a4de54447b0c2afa1348c0ba0" + "bytes": 1715, + "sha256": "26dd7623343bee3f10d3b796aa32c0c90a91cc885d0c975e0b9f6e38f2ea4f92" }, { "path": "THIRD_PARTY_NOTICES.md", - "bytes": 1306, - "sha256": "09da1bc34aff15e70a5d4a420396a52f02c1b44671a680b9e4c7b1deb619b2bd" + "bytes": 1286, + "sha256": "9ac6b8b61e2c900300e839e3bd6860b7f92a304c5ebeb7cd7d3f2a6c0713e40d" }, { "path": "VERSION", - "bytes": 13, - "sha256": "d85dcce39f43861ff7231aeea09f6a33ff7811bb0930c8499e06fbe647ed397e" + "bytes": 12, + "sha256": "0f071866abb1b4978015bfb21fe931aa992524721fb8a94360443e49a4552dd7" }, { "path": "deploy/.env.example", - "bytes": 2197, - "sha256": "4daf35bfa9164aa80654c18709fe0ab6a987bf674b73b38cc2993d488e156fb1" + "bytes": 2142, + "sha256": "d42fbffbe1cc303fe988749ccda50b6eac2f03dfbd4e255ec3a80567c8c3bade" }, { "path": "deploy/README.md", - "bytes": 16798, - "sha256": "d15b46ebbcb29b89d92d08f86243bf4b6bd1b11fdb4fe772682c09b72dcac662" + "bytes": 16601, + "sha256": "f2958b2cee6b4fbdbbff4e27b938898fcc5193a75ff75b8d6e08f1425dc63fdf" }, { "path": "deploy/audit-eden-runtime.sh", @@ -130,8 +130,8 @@ }, { "path": "deploy/dolphin-controller-run", - "bytes": 89, - "sha256": "b03295a6483293dd0619bcdff1bf18ac9b6ddfec6511ce6036265e158580509d" + "bytes": 87, + "sha256": "8633ba7fb8edeb70e5113e6a26cd0d9b33b77af61d3dee6a5f2c4d9caed8b3ac" }, { "path": "deploy/dolphin-controller.py", @@ -140,8 +140,8 @@ }, { "path": "deploy/eden-controller-run", - "bytes": 86, - "sha256": "6157ec6b1d3518b0784826d8771190e67fcb2aaab26de8074291d4bdcff18c85" + "bytes": 84, + "sha256": "b73c94035b0c90861a37ae70b59644bff2b5a492b747686682240daa31607a7b" }, { "path": "deploy/eden-controller.py", @@ -155,8 +155,8 @@ }, { "path": "deploy/ludarium-unraid.xml", - "bytes": 4929, - "sha256": "b14e488d0d553b051083cfeb13074fc97b08f46f7b9a9112d6c6277b8cd3447d" + "bytes": 4900, + "sha256": "f382722d52e0cc618e1185740cc76888d907b5fa584617ac38b3cbb266b21245" }, { "path": "deploy/ludarium_sidecar.py", @@ -200,8 +200,8 @@ }, { "path": "deploy/unraid/my-Ludarium.xml", - "bytes": 3277, - "sha256": "8137223fafb384619388b9dd379588b0ddbad573d9c7f7681f7c356fb0d52875" + "bytes": 3247, + "sha256": "d7c27cd4f3e8521efc17ebc1ddca72d085de589638cad065e4f07c7069c6022a" }, { "path": "deploy/verify-release-identity.sh", @@ -215,83 +215,93 @@ }, { "path": "docs/PUBLIC_SOURCE_BOUNDARY.md", - "bytes": 1640, - "sha256": "adabda82973a76666a354184d59e1bbd9ab35c3c499ce731f59df08d4ef1b6c9" + "bytes": 1609, + "sha256": "4b42dd3390ded7b8b51657b31c2bd69f24759bb4c06b1f4c50fe21e2dfeca427" + }, + { + "path": "docs/screenshots/living-archive-audit/audit-attention-desktop.png", + "bytes": 261667, + "sha256": "fee8ad9bf67db70e5d04631ca050f1dd8220ecb3843b40bdef57378aad8b775f" }, { "path": "docs/screenshots/living-archive-audit/audit-home-desktop.png", "bytes": 920557, "sha256": "5c04f05cb7e2789d009deeebf2d7cb29f62c33809c89a684cff6076c1500b93d" }, + { + "path": "docs/screenshots/living-archive-audit/audit-library-desktop.png", + "bytes": 440111, + "sha256": "a3a5057033eea9b6d03868fc82ff46cf83eda19dbecf4c1e59a4ef58622f5f27" + }, { "path": "fixtures/catalogs/synthetic-logiqx.dat", - "bytes": 405, - "sha256": "d5735c85b0a97c7136c1ffc740d3f1947fabf7e84223c2599eb3e889a8633c97" + "bytes": 397, + "sha256": "9bc49c9a24a52dd2fafa9ae6433cb6e55f1f44a7067a697947373061e86b53a7" }, { "path": "fixtures/providers/igdb-game.json", - "bytes": 599, - "sha256": "c2ebf69f5c089451aef7c2334986a86ab370da63e63aeb866ac2f8af65b7a30e" + "bytes": 583, + "sha256": "e9b8ef0c8dab4118a68aac74de4a2a8c5dd7cfe0308fa24125fe10fda2f7848b" }, { "path": "fixtures/providers/mobygames-game.json", - "bytes": 325, - "sha256": "52d92575d2e452271e85cc95bddb4fa6fff9cadf0d575be417b76703ec914dbd" + "bytes": 313, + "sha256": "8636674e312b00ca058930f37e58497d7f96d00fc9e80da82591d640d416fec9" }, { "path": "fixtures/providers/retroachievements-game.json", - "bytes": 701, - "sha256": "ed85e722612be74eaa4d83a2efccb7609c3b4cab37fec54910a3a8a11bd381d3" + "bytes": 672, + "sha256": "175eb1b9d93f3804f8d11c7270f4651ef80753bfdcc5c6d384bf44125ce62e80" }, { "path": "fixtures/providers/screenscraper-game.xml", - "bytes": 555, - "sha256": "e2563fafac2d359f6db63827eb15681333388f2b7cee02a4f0a6227cd56b6ebe" + "bytes": 553, + "sha256": "ae2c6ec8ea8b87bd860c176464cd73f498b0c2964f0683f24102af731e5ba115" }, { "path": "fixtures/synthetic/README.md", - "bytes": 336, - "sha256": "b7413d854f25f5ef7abb1f5378a86a0cce9d296ed9083217912df19cd205c5e9" + "bytes": 333, + "sha256": "e8f90227ab8bd671b7123cae1253448db119342c54d0b4ff438512b9d1f0f9da" }, { "path": "fixtures/synthetic/browserplay/README.md", - "bytes": 2991, - "sha256": "0aa5c12202cc61be85e663173b1fdc82f806fd8673a7a66dd0d93bea294d07f8" + "bytes": 2951, + "sha256": "f53783b22c141bd88807dbf6973ba02298887617ad86c2d88aecdb99f667d494" }, { "path": "fixtures/synthetic/browserplay/generate-fixtures.mjs", - "bytes": 10816, - "sha256": "942d874054bab187084bd30d44875acc04df040c4eccf66a5bf316f8ff13b4b5" + "bytes": 10646, + "sha256": "4bf1c11ef1d3037489f6610f1c43e4e0200d56d01b4590f476bdd1e7f70ab4ce" }, { "path": "fixtures/synthetic/browserplay/minimal-ines.base64", - "bytes": 26, - "sha256": "7cdf4dc4f2ecf3800dce7a5c1d08e62d89209c06aaa80f4173a1176271acc20d" + "bytes": 25, + "sha256": "1da50237ba7de62a53de6df4043f48914fd370be8afbde9b3b47e6e4395dd4fe" }, { "path": "fixtures/synthetic/browserplay/playable-nrom.nes.gz.base64", - "bytes": 190, - "sha256": "98639855de23e8f1a47fa1ca203f153c1c2e63b02f4d78e3563691739bfcf759" + "bytes": 189, + "sha256": "010cb7c848cdd2904799eefd6acf39db2893fb31a29caf881d18faede4cc3426" }, { "path": "fixtures/synthetic/browserplay/ps2/Makefile", - "bytes": 267, - "sha256": "01902206ac79c3cb6a5b5f9728c28d5012eee6fd04048f64010993ea7e0e3073" + "bytes": 255, + "sha256": "8252fc8c386b12daf5b3998b4ee0e613f45007f0da4c6267ee691080d1f1c74e" }, { "path": "fixtures/synthetic/browserplay/ps2/SYSTEM.CNF", - "bytes": 58, - "sha256": "095a502feed5d312a2aeefcef83e7ed7ecaa16b846910012c8b1bb3acc4eabbb" + "bytes": 55, + "sha256": "22bfe4eebfa92bf8e0ed2337241cd9625379792f1d3ceed6125fa5c7709624f1" }, { "path": "fixtures/synthetic/browserplay/ps2/main.c", - "bytes": 1067, - "sha256": "f8cbfb62a78855accaa67e642d26053db8c6c69464a38003af521942c7633f12" + "bytes": 1035, + "sha256": "e3a329b4ce9c7413f4625435723ea9f2401054b2deeea31155f475cc669b791a" }, { "path": "fixtures/synthetic/browserplay/psp/Makefile", - "bytes": 312, - "sha256": "217c4fd84390957399dd922802e3bac837a4a303b612f252618a161a336b2a55" + "bytes": 299, + "sha256": "d337f4258a4fef70d0ccbc005e45ff0d5106233b364b0bb8ea98282cbdc2095b" }, { "path": "fixtures/synthetic/browserplay/psp/ludarium-psp-fixture.pbp.gz", @@ -300,28 +310,28 @@ }, { "path": "fixtures/synthetic/browserplay/psp/main.c", - "bytes": 586, - "sha256": "b7a9a13c7058e73af664acde1554ae344142c713d9c33504bcb489f24bcfdd0a" + "bytes": 566, + "sha256": "d51e91fd9b5c4dcea7823b45daa84d170c273ca91fd68747dd631282e582f1d2" }, { "path": "fixtures/synthetic/browserplay/psx/CMakeLists.txt", - "bytes": 211, - "sha256": "35474589a82268e37c3a93d0d4ede1828004d19537ff31fdf376b0f7dd317cab" + "bytes": 206, + "sha256": "5b84342bb04ad25a800880a59b987720596f894496a06e6d06e766ceaba37df0" }, { "path": "fixtures/synthetic/browserplay/psx/CMakePresets.json", - "bytes": 451, - "sha256": "4d29079efb6f07b4103e9048733144b1a7a8ada3c4e7a7fd42a1ee35c1b13e63" + "bytes": 434, + "sha256": "40578720e01a752c943027997329621df9be4e5bf1b4f4bade57bd54aceb34fd" }, { "path": "fixtures/synthetic/browserplay/psx/README.md", - "bytes": 1139, - "sha256": "4b0193ec320d47c48b3a93044e548d5069647252d1bca922579f3f9ecf3dafb5" + "bytes": 1117, + "sha256": "aab6d18daafe40a08787af4a469fd782c8628d2de208983e95cbc595c69c78a1" }, { "path": "fixtures/synthetic/browserplay/psx/iso.xml", - "bytes": 551, - "sha256": "426023a4e135ef3fee27988c2c775165b28142f08ddf2549f15a1a5b9159d0f3" + "bytes": 538, + "sha256": "9c7fb800f699631bc4f069e75eb5549a3f79fe88feae8b5269c3746ad193042f" }, { "path": "fixtures/synthetic/browserplay/psx/ludarium-psx-fixture.chd.gz", @@ -330,523 +340,523 @@ }, { "path": "fixtures/synthetic/browserplay/psx/main.c", - "bytes": 357, - "sha256": "dd1e75938314bd1be52c8a37b4a586cae0707fbbff29fb5f14ed3f9c261bb5d9" + "bytes": 338, + "sha256": "bdbb66c1d1a09eb085a845d56921d82e015dd6630ad59dd73b327df24ed1d57b" }, { "path": "fixtures/synthetic/browserplay/psx/system.cnf", - "bytes": 61, - "sha256": "344fdb117a7dbe4676d96b764a3f873e37a57330883e69ae675b239e472bddc2" + "bytes": 57, + "sha256": "853b03dffebea1efbf17a9a43f5a6de0b490576d498191cf9ddae2223f67ad91" }, { "path": "fixtures/synthetic/cue/complete/game (Track 01).bin", - "bytes": 47, - "sha256": "1a42ea1d03476a6ad2127c2b82e8a6a8a228ac19e3d59afff7c3c67fffb23158" + "bytes": 46, + "sha256": "3d900252fc25923b1a90a5d80e45ffb6c29bb961cb74e965250bc7b404f87492" }, { "path": "fixtures/synthetic/cue/complete/game.cue", - "bytes": 81, - "sha256": "0528b914e4db7a532732f8987d51c3b79f7e83cde88f53725ef9279c91b26d2f" + "bytes": 78, + "sha256": "2dec1e2d9e54e8298e9e334caecee0e91b44bc8e7306c9ef93db3d7780b1de33" }, { "path": "fixtures/synthetic/cue/missing/missing-track.cue", - "bytes": 72, - "sha256": "298fb93053ef6475df80bf3e85930df8498a0db1ae35c06ba6ddcc2bffe45436" + "bytes": 69, + "sha256": "f6f6c205d67e5701fd7711fcbb9f20371e093c7ef44b82a3485455b509412f52" }, { "path": "fixtures/synthetic/cue/traversal/escape.cue", - "bytes": 33, - "sha256": "1ea0b7a89bfd4da88d58ca12e4b1d1719d8c9bba4c2a65fcbb0a5aff2ffff3f5" + "bytes": 32, + "sha256": "7964d1b8ac59977c4a5eb05c91b4f4c24d69bffa01f10d9d99cf5addfa6c9291" }, { "path": "fixtures/synthetic/m3u/complete/Disc 1.cue", - "bytes": 22, - "sha256": "c3684e9b2868dfafc211df7f7e451be184b6e6138f231acc5efd848bc440cdb8" + "bytes": 21, + "sha256": "38ba3bbabc4289ea3533bf75f6a96fefa25b2ed1974cd65a4dac1c2bfe447c0f" }, { "path": "fixtures/synthetic/m3u/complete/Disc 2.cue", - "bytes": 22, - "sha256": "aa33739be7eece1868a9b0dd1d202c0332baa1aeb239c56ef313321e2ac1c279" + "bytes": 21, + "sha256": "ff82ea65ca28dc658706373daea5b2fdb011d322aebf1db647a6699aac45a13e" }, { "path": "fixtures/synthetic/m3u/complete/collection.m3u", - "bytes": 33, - "sha256": "542cebff94f80b3be0e7e780bd27028be2e1310c88f0991826b159abcde1dfb5" + "bytes": 30, + "sha256": "672bcbdd8974974f39b4796513fe9019961a7850d8cfeeb7685ff084dbcb3f6d" }, { "path": "fixtures/synthetic/windows/installer/setup-1.bin", - "bytes": 30, - "sha256": "a0e9f4b2d07a8457582281b0efdf426f563cc931639435a7117dafef28762e8c" + "bytes": 29, + "sha256": "2d48d825efd6b3578ef66946c56ebae4f355eb5f5eb4c702badeae6acd793c96" }, { "path": "fixtures/synthetic/windows/installer/setup-2.bin", - "bytes": 30, - "sha256": "4c7e924a125e01603787df1f17729290bd6c00f5b84269d2669901a14ab640e9" + "bytes": 29, + "sha256": "0a88541e9db1f0e8b665a28be2765e58008355a423d2a4e5ac029ac7814e195a" }, { "path": "fixtures/synthetic/windows/installer/setup.exe", - "bytes": 59, - "sha256": "99cbdf55655fb6419b36ddfd1d5de49ed7b1c506f73dd0c1011c339d587a4ff4" + "bytes": 58, + "sha256": "de048168e2f9bd73c0118dd02a8623cd59c97bd3c204a180705567b7b76e2250" }, { "path": "fixtures/synthetic/windows/installer/setup.exe.fixture", - "bytes": 86, - "sha256": "88d4148192ed9a8999aa3c3b95fb066caf67793c06135d413b2845c32d46c48a" + "bytes": 85, + "sha256": "3fdcb5b88ec6e62dfc1c11243ad289d7748a500bb8ede887b96a3eeb09bf2b5a" }, { "path": "global.json", - "bytes": 116, - "sha256": "e19ae6304f93e71dc33b4de89a3f2978ee723dee2b1c52dc043afe77e402a046" + "bytes": 109, + "sha256": "b132d105648c7dbe49f2c391fe0b9898027e470ddc7cfd4d7239af5df63401fa" }, { "path": "public-source.allowlist", - "bytes": 1340, - "sha256": "25d46eeb2b73e71b29f23d67cf000a6e80ed5350ae214cb981766a3397a1881b" + "bytes": 1418, + "sha256": "f802433b31b005ff1e66de1833253e353e36770c1a72eb3b0984e19313ca4370" }, { "path": "scripts/export-public-source.mjs", - "bytes": 3826, - "sha256": "7d1ea47d068cac8e32970f1023bb8e6f8d77dcacd1c44d81c3e6f4696960c1d9" + "bytes": 3761, + "sha256": "2f57d714bc6acabc07496ccf2bfd9e82df14e51c27dc9ddf4f1b38f9aa39e7c6" }, { "path": "scripts/validate-public-source.mjs", - "bytes": 1954, - "sha256": "21b68ca38bf13231345b45b5259676748ab2e483db3098cbf54ac3425bfda11e" + "bytes": 1921, + "sha256": "1a9dca4e0d7d3d463b5ec9b11613daf5242267bf9a6a54ec0fd9292acc6e39a1" }, { "path": "src/Ludarium.Api/ApiExceptionHandler.cs", - "bytes": 1834, - "sha256": "ac9e41c2b8fa666cbb5a1e68cf1b92e07b638548f91b0c2f6c32938a3f29a4d3" + "bytes": 1799, + "sha256": "08a9c41184ae8168302a00087f16b9ba48d3042a3ba79a3705f7392285c4edfa" }, { "path": "src/Ludarium.Api/ApiRateLimits.cs", - "bytes": 817, - "sha256": "3e60be3de280b5053a98b95b39edc1db7f4c7532a4a42d083aac59cd95c8cec8" + "bytes": 799, + "sha256": "a44bb231a5a734f465dac619325847296147e3ce2b10126311a65cf2717c1943" }, { "path": "src/Ludarium.Api/Ludarium.Api.csproj", - "bytes": 692, - "sha256": "5022958567fbc4583ad348374dad878415ce4670b250e2a5ab5a18af4b36de09" + "bytes": 672, + "sha256": "e073e3a409f025a6241fb59be7afc7d4910b880c2c5c81dc984e13ba590d6440" }, { "path": "src/Ludarium.Api/Ludarium.Api.http", - "bytes": 137, - "sha256": "b0cb4693a5c5a48eacc3019df5c949c6d3fcd79d22c0410ec6434b62deb120b2" + "bytes": 131, + "sha256": "d6621fff78806bde7fa9b5993d695996a2b51d8de7e60ade338069e86576dd6e" }, { "path": "src/Ludarium.Api/NativeLaunchResolvers.cs", - "bytes": 6394, - "sha256": "fcd6fbd3381d28d78e128ae2ba047948ac3c71c1b383a810e5a97ed9bf80377d" + "bytes": 6268, + "sha256": "267fd29f00315fcae4ae291c2b0b92b67fa69392d295d2cb9aef27e46277f147" }, { "path": "src/Ludarium.Api/NativeRemotePlayerEndpoints.cs", - "bytes": 18969, - "sha256": "fae622f6a7a25053bbc609e7128fe0e98946a055062379b6ac7f9e373f702547" + "bytes": 18612, + "sha256": "eb035050f527d4f0cd92731273d317b1a646f6299ec10789131fc15979c6cba7" }, { "path": "src/Ludarium.Api/NativeRemotePlayerRuntime.cs", - "bytes": 23406, - "sha256": "707e77bc4f4b2ababd6a189ebe7b5f4bbd40938bca16df7f850b3e4fbc2eb06b" + "bytes": 22924, + "sha256": "79d9b76d5b8f91d9f77eb72a543ab01dea7dc894e08d1fa6d4a70e716768ff60" }, { "path": "src/Ludarium.Api/Program.cs", - "bytes": 87519, - "sha256": "e10c715c083242a6fce441b07d2dd8bc81a0d7995f693b11ee10630f2eb3433b" + "bytes": 86210, + "sha256": "aa518304340bf3fb425270be2017966699b8b4eceede248a7851e2a343a506d2" }, { "path": "src/Ludarium.Api/Properties/launchSettings.json", - "bytes": 358, - "sha256": "7876040e368f821a19256ed6df65efd5a39bdea02baca1eebccea957cb5de917" + "bytes": 344, + "sha256": "5ba399326282f9ee76827c6a549792aea9c042da185fac46c3cd161c365291e2" }, { "path": "src/Ludarium.Api/appsettings.Development.json", - "bytes": 127, - "sha256": "73f95f9e0ceb205fc1c4dc50c07697fcfa29d7087868c2aef1d504cb38c771ec" + "bytes": 119, + "sha256": "817db0bf2ecca78364c41dbaf7949bf2504cf47a1c3d0d54f3be8178fefc030b" }, { "path": "src/Ludarium.Api/appsettings.json", - "bytes": 151, - "sha256": "200332b434757a0054a3d356c91cde01f2c48712be8aa2bcb0f3e973619f06e3" + "bytes": 142, + "sha256": "2d8bb40059df22089b94c025be8baad5a869b72d4d755d199c872f03bfe6f225" }, { "path": "src/Ludarium.Api/packages.lock.json", - "bytes": 2418, - "sha256": "8774d55f71356ab268fb4ce39906f4cfda21e42cc46cb9cad6442201b9debcc8" + "bytes": 2348, + "sha256": "755a30d56a8a0b941428ae11375c20e12bfc5cf175e0760fb0a398059eb2bfc6" }, { "path": "src/Ludarium.Application/Analysis.cs", - "bytes": 36914, - "sha256": "4a256e59c72f3ce6d4d897726984fd6ee96847a83e168c528923c993d9cbee28" + "bytes": 36268, + "sha256": "0ae1bfa149edb970a0cd5ec61448cbe5249f179446380c3e9135c405f16e7a67" }, { "path": "src/Ludarium.Application/ArchiveAnalysis.cs", - "bytes": 5305, - "sha256": "dcf52de2e5f06eabe4593f5266156db1fcc7b3fb10dba6f0e296b80d487356ab" + "bytes": 5200, + "sha256": "105e2aa64042766d330ce3db981f05383a1fd195a7adf98b95cd7d6c1dc14a10" }, { "path": "src/Ludarium.Application/ArtworkQuality.cs", - "bytes": 8269, - "sha256": "f00bacf2e5a2c0552360dcdc702ba86c572bcc5c90a50ea07ada945a090d6ad9" + "bytes": 8085, + "sha256": "f31a6a3ee6338e568c0a0b68838cf03afdfff90f15ec3ed1af42541bbe1c5e94" }, { "path": "src/Ludarium.Application/BrowserGameDataPolicy.cs", - "bytes": 3510, - "sha256": "9a8cd4ebe7ad06204661ad8fdd0f80baa5a8155aed736c199627ce92602296fe" + "bytes": 3435, + "sha256": "10c2b2ae66d9d724f7b6eac85eb4d3ec0742aed7df72075ccb85a031d279c0e8" }, { "path": "src/Ludarium.Application/BrowserPlayPolicy.cs", - "bytes": 10725, - "sha256": "4cf8728ab760cd58f8046ef96ff637bfa8cf3d108ed4f80b39bf8a69088567a5" + "bytes": 10557, + "sha256": "a3cdc55859e134d5a739557f302728d471a010dbe4ed7c9f7ac48a90ec719875" }, { "path": "src/Ludarium.Application/CatalogImport.cs", - "bytes": 4273, - "sha256": "0c783eb7055dd477921c51379162f8b44b7e9cfea909d620463f92eff355aada" + "bytes": 4201, + "sha256": "0625cdbbe5d6b7e6adfec2001086ccc5fb1b77be464c2667e6a604371af42cd8" }, { "path": "src/Ludarium.Application/CatalogVisibility.cs", - "bytes": 850, - "sha256": "cc9bb959026ad70bb81db46506ab7a0ffb047d572e47e6601d3782cdb29b74ce" + "bytes": 830, + "sha256": "0a579f414c36bc290586d56aa707da000ded0efeae517bc6205dc1be74431b57" }, { "path": "src/Ludarium.Application/ClaimPolicy.cs", - "bytes": 621, - "sha256": "81858ae21e4893b39dd4495bd5b76e515d458f1a85d48bc3ad0d716f6865cd02" + "bytes": 604, + "sha256": "a3c444bfa583cbb3d5a1a8125bee91feca910d59eb1896c6b78b4837ae1be69b" }, { "path": "src/Ludarium.Application/Contracts.cs", - "bytes": 29427, - "sha256": "a94d61765f1881268187352a0a4d62a90e01daa43aef2c233c17c452533d39bd" + "bytes": 29047, + "sha256": "ab7c3611e51346ae46c34301ef9857cd2dc22bdaa40c2710805981881a22cfaf" }, { "path": "src/Ludarium.Application/DiscImageAnalysis.cs", - "bytes": 7512, - "sha256": "b65fbb31f6bb08d14d6e39b8a299cc382b3bca6a47da2190b332d3a02b522aa6" + "bytes": 7365, + "sha256": "df0ce79fa711165e2fc1901578753de4ed62ba76a5ffbceb921a160b4d50b3b2" }, { "path": "src/Ludarium.Application/DolphinLaunchPolicy.cs", - "bytes": 3309, - "sha256": "ec1176b509fc212c2162fde487dc90398cf154165b691dd3161d9ab1d15e8ff4" + "bytes": 3249, + "sha256": "13c26b30da4668e8ba2ccac3e04e712f3a689f0abed85a5c665175a2226c79f4" }, { "path": "src/Ludarium.Application/FirmwarePolicy.cs", - "bytes": 3095, - "sha256": "3ef838d6e9fe3ca7916e86c58646584cc59161acf99942fa28a102bfcff811b4" + "bytes": 3046, + "sha256": "6d29c5c200b55d51478024cf44c412d9fe3ed2e2aa62f97d2420ab2117abefc3" }, { "path": "src/Ludarium.Application/GameDataVaultPolicy.cs", - "bytes": 2295, - "sha256": "4c3b8488d839db6227ec5848aab34a897378f3a96aab47c3a72c4b575d9972fa" + "bytes": 2246, + "sha256": "fd30c53717709401c46c7926d4b9f60784e7bca4485d653a0e82ad98745b41c3" }, { "path": "src/Ludarium.Application/GameQuery.cs", - "bytes": 3361, - "sha256": "39c26b1f99d5982780c6c2f40e969b37088b78b6c22c3ff47554d7360567848e" + "bytes": 3285, + "sha256": "1504dae0d6635e9b70b7e08e33f294033cd14f2f5d4aeaaf80939736530bc4d8" }, { "path": "src/Ludarium.Application/HealthRules.cs", - "bytes": 1386, - "sha256": "c9003acb1f1bd85881e5309b31af1ef693762ec6898a84b7c47451fd54cdaa03" + "bytes": 1360, + "sha256": "f30c512360bb1127ca96016e9286ae51a84764609dea562a66532327c9ca008d" }, { "path": "src/Ludarium.Application/LibraryContentPolicy.cs", - "bytes": 5934, - "sha256": "940c1ba819c2dea7856d815e948c6d219f733fbc36bdfa991331544fe6f98f94" + "bytes": 5832, + "sha256": "5ae79b4527e397a37bc20fc0afd9b8194987019a1a6bf108dd7c9aaf3cbae5d8" }, { "path": "src/Ludarium.Application/LibraryExperiencePolicy.cs", - "bytes": 5407, - "sha256": "42baead3208fd83022559aa60b128dd95e5a00f767e66ba91fa871f639e8ad65" + "bytes": 5289, + "sha256": "3ac122deb6077a0b55d04fcf1242755041c3a8e3fd9d725e02e910ef6ac7b062" }, { "path": "src/Ludarium.Application/Ludarium.Application.csproj", - "bytes": 561, - "sha256": "20e83b0a57241fae6b6fc52a919c0f22c5b36f6006d68d5a2098ed19fc3f1632" + "bytes": 542, + "sha256": "5f64c274e5fa299351ddab46fda0aaa4c4d194a046ee3f6e9f7565bd43d4ae15" }, { "path": "src/Ludarium.Application/MsiDatabaseAnalysis.cs", - "bytes": 12482, - "sha256": "d90bf0e2433a3c65abe6ace09953cf98efd3a94036666812ccf7166aad4fe3d7" + "bytes": 12256, + "sha256": "4deea3a8c63fc2c11b819e53788ebd2ef56f6ca4b602d2047724442892cb912e" }, { "path": "src/Ludarium.Application/NativeRemotePlayPolicy.cs", - "bytes": 3443, - "sha256": "dc306fc9291830c743150bf3d0e175e0b0a1be0551e62d0b2497103d17aa3fbf" + "bytes": 3374, + "sha256": "cf49abcb469d58eb71a6378246163054598572dc6e9e253c9518dda86dc259d2" }, { "path": "src/Ludarium.Application/NativeRemotePlayerRegistry.cs", - "bytes": 4716, - "sha256": "8f3002231142e04cd58b5b06d0025a0476a1dd8123af6550e3324e0cdc8e2dde" + "bytes": 4611, + "sha256": "702aedbc33ec7e00bc0a232b36460feed1ebb575c2a15d6750c02e0495dd933f" }, { "path": "src/Ludarium.Application/ReleaseIdentity.cs", - "bytes": 877, - "sha256": "aa45bb17e4adaa233cbb608f4975f77e5b97517f46c935c3af38d0d1d810a19a" + "bytes": 854, + "sha256": "d02a929606d1817faa22b9d631c7e1587b840f774ff34fe978e1ab65bf600077" }, { "path": "src/Ludarium.Application/ReviewGroupQuery.cs", - "bytes": 672, - "sha256": "b9b6018fb8da960fc8aac3e4ed58e204e43ff109b2af92f87db2ec5a93de205d" + "bytes": 653, + "sha256": "329e193456d1d27c1d75225b280d1c24576c7f3b1627d93c7922811db40e7c26" }, { "path": "src/Ludarium.Application/ScanCoordinator.cs", - "bytes": 29887, - "sha256": "05cd325cd207986b14af53c9eac8ea3ca2fd88b28fec92f7e03d8de55de1c20b" + "bytes": 29516, + "sha256": "8f38680d48c381badc9fbe64da0c4e00aa2f0b77d5cd78ce92a8bae4feb4974f" }, { "path": "src/Ludarium.Application/SnapshotComparer.cs", - "bytes": 1847, - "sha256": "29760bab0613e405f4adb4e436ebbdfbc12bd586aff22f1effe8f5b9d0727d63" + "bytes": 1819, + "sha256": "66f1ca8e771f8011c1831767064cade135c176d9b0af0b4140482f2a5a6f82e0" }, { "path": "src/Ludarium.Application/SwitchLaunchPolicy.cs", - "bytes": 4598, - "sha256": "89087c7ca4c5ce066a73aae02492a5a3ef25dd4d3f90464e24a08c33b8d504f5" + "bytes": 4515, + "sha256": "f4fa1b7aa837b37f472ad21879905eeba253c2f9b8b217c0baf1d5028bf4c978" }, { "path": "src/Ludarium.Application/packages.lock.json", - "bytes": 870, - "sha256": "98a83bf2f6d17716999cc3625a874c6b76422f640d2c9703b49d521ab3ac3cf8" + "bytes": 843, + "sha256": "2115a2857f74abf9d841eef9d2fe16b5bf4f15ddd0d8b5f0170db379033220a4" }, { "path": "src/Ludarium.Domain/Ludarium.Domain.csproj", - "bytes": 219, - "sha256": "61e3f2d043e37f0db4be1d8083dd31bebbfbb8fde2cf027327db2556c16bc385" + "bytes": 210, + "sha256": "11c0c110e19c9eaeaef66a0382f7a3e4ff6ab395d99ca6664e1ba378371cc47c" }, { "path": "src/Ludarium.Domain/Model.cs", - "bytes": 16528, - "sha256": "f01f02429bcb5cea2cc0e109524194dd5593b93e219f1368aafb72882b0cda7e" + "bytes": 16301, + "sha256": "769c7412441f973c321e5ff7c97e72b412811db3cb90dbaf4dc0ca34eb6a6ba3" }, { "path": "src/Ludarium.Domain/packages.lock.json", - "bytes": 66, - "sha256": "a4364d81a6de2707d66fbced18fbbc926c882ab96e1d1aebbb17e871285b9d75" + "bytes": 61, + "sha256": "a29c6aa8cfb81874ff8bb78dc369d7416f28c9b8cc47e99592bfc019b20c41eb" }, { "path": "src/Ludarium.HealthCheck/Ludarium.HealthCheck.csproj", - "bytes": 168, - "sha256": "e010305cc3f85a16872604061831dcb308d2cdea6097e6c21fb6c0206db546d9" + "bytes": 162, + "sha256": "dbaaf6b5b775c2fb5e4a9adbda6c7b258e71bcd3c68bf91a6106c6fd42f7e133" }, { "path": "src/Ludarium.HealthCheck/Program.cs", - "bytes": 327, - "sha256": "e101be7503d4f5890fb262db893c5f5eaf6280a3dee6b77293e35c793eada65c" + "bytes": 312, + "sha256": "67257bd7d3e1c4bb90f24b17388567c29bb7993f8a813c61c8f6178b3bac55f5" }, { "path": "src/Ludarium.HealthCheck/packages.lock.json", - "bytes": 66, - "sha256": "a4364d81a6de2707d66fbced18fbbc926c882ab96e1d1aebbb17e871285b9d75" + "bytes": 61, + "sha256": "a29c6aa8cfb81874ff8bb78dc369d7416f28c9b8cc47e99592bfc019b20c41eb" }, { "path": "src/Ludarium.Infrastructure/AssemblyInfo.cs", - "bytes": 103, - "sha256": "226e2be294cbd45533135fa417d2f1ffc08c20882a4003308001bf6223be1c74" + "bytes": 100, + "sha256": "c11fce8eed0ca11b4ad6b5d51ba753f08f75347f968deaa4bb278066ede9b0f9" }, { "path": "src/Ludarium.Infrastructure/DependencyInjection.cs", - "bytes": 5590, - "sha256": "7ed6ea7483b84a2543f1fb79a5b8cac1ca99545d38acd8b3db75e66c9b4cb849" + "bytes": 5520, + "sha256": "98577805afcb5fc33a91ed0605b970eec52e98796bd6390960b488ca2100fb49" }, { "path": "src/Ludarium.Infrastructure/DiscSetArchive.cs", - "bytes": 12072, - "sha256": "0fb8c8afe4dd812fea7c30b6a1480b1fd0724cf17cca72c3b70970c70015a07c" + "bytes": 11822, + "sha256": "95764b254ce19150f07814bdfa0b1883b0f3b24ac7c9962721efb53bd6bb2acf" }, { "path": "src/Ludarium.Infrastructure/FirmwareVaultFileStore.cs", - "bytes": 6692, - "sha256": "c25da808352204b80c37feff4cb4e8c90e62d6d63f245662f598d8071e25f6d3" + "bytes": 6559, + "sha256": "53f36de7fa9965ed31ead8f3e055ca6085bf956bb07ee676f6680580be7649b5" }, { "path": "src/Ludarium.Infrastructure/GameArtworkEnricher.cs", - "bytes": 31211, - "sha256": "f6d8dcdd673aa33493f0d4afc29d523e884f9d0c66179b4b32f58c9124e7da05" + "bytes": 30700, + "sha256": "3569c13bbc33654d4f401c882de2f9b3a913bbd8b2a03338ea9d0f0c2c143fa9" }, { "path": "src/Ludarium.Infrastructure/GameArtworkStore.cs", - "bytes": 9545, - "sha256": "2068b7b4ec20915e35b96436844d6f79bd22683e4c8240fd7612dbfba15d6b43" + "bytes": 9362, + "sha256": "5d7a05db45b05f2f0441acb10ed93cf511af09e002376d2ad7c1666780440676" }, { "path": "src/Ludarium.Infrastructure/GameCatalogExportService.cs", - "bytes": 11111, - "sha256": "730b33b6d8bcf4188ce085d2985cf6c866d2f635472ba87bf1adb99b5add27c4" + "bytes": 10915, + "sha256": "e555566b858ebbd6092cec0ad0920088cb2014f6d33f0d9343721bc2ab390d11" }, { "path": "src/Ludarium.Infrastructure/GameCheatCatalog.cs", - "bytes": 11607, - "sha256": "c8f2842f5a7e3f5e61e95fabd0fec8e5dde2ff61232861caaf0e0d882a77ba05" + "bytes": 11385, + "sha256": "7c87f166d352dee736da5cb0fb124b39b9fb5fac70bfdb50e87d089ad2410e32" }, { "path": "src/Ludarium.Infrastructure/GameDataVaultFileStore.cs", - "bytes": 10548, - "sha256": "3cd288efbcf2cfc5d7a91ef0111598cb0d562701853951cfdc52e606f5c8973f" + "bytes": 10322, + "sha256": "30892d62b5f03837707dc7ae2b4e87151e39d52eb99e184e0453b1da3b7685bf" }, { "path": "src/Ludarium.Infrastructure/GameMediaStore.cs", - "bytes": 6653, - "sha256": "d1d411af0bc35378b37178fd741e65982b8bd971a1463a1e221b45ed6bcd8fbe" + "bytes": 6522, + "sha256": "a171e0b41b1935fbc63d2d148f923fcd4f3ee49f4c54226bb11521254050b1e2" }, { "path": "src/Ludarium.Infrastructure/GameMetadataEnricher.cs", - "bytes": 11157, - "sha256": "8452b84e2d53fe1b5c668da41159c1da6ce22505c6bffe4defb02e4bb0c21453" + "bytes": 10955, + "sha256": "0bad4624ca3ab55018f343543550261676a97df41347636f3bce8812c77a5d77" }, { "path": "src/Ludarium.Infrastructure/GameProviderHub.cs", - "bytes": 12841, - "sha256": "021facfc2ef7f919b231ff4afff914df9031fcc4cdbb944ac67a900e9a0227da" + "bytes": 12615, + "sha256": "01c4ab008ad973a8a449baaef9012d4ace9bbdcb5f0962f4b2027753133173bd" }, { "path": "src/Ludarium.Infrastructure/HttpMetadataProviders.cs", - "bytes": 28915, - "sha256": "31903ebad0cb829abba64201caa04769ad0ad2d537027b7103723b0101b58ffc" + "bytes": 28408, + "sha256": "b130537724fbcf5a008edae102f267393b0ff2c905f77f06699675a5e8cf0915" }, { "path": "src/Ludarium.Infrastructure/InventoryExportService.cs", - "bytes": 5360, - "sha256": "90c7cb0098c4a49c907b434c1b57797ee5c545064602438a6e12a773e763db83" + "bytes": 5253, + "sha256": "7377fee3cc3d2c0105e73a995c6fc87e5649a1cd2a573a96c49b3652cda0f17b" }, { "path": "src/Ludarium.Infrastructure/Ludarium.Infrastructure.csproj", - "bytes": 558, - "sha256": "871505795835a2a020603f09f89dae3c3cb35af7b7b61ae714ea2eff21a0f135" + "bytes": 539, + "sha256": "82763467d5c1fe57eab4ddac9ecb3c1d34248025f5438820f29620f12d9547eb" }, { "path": "src/Ludarium.Infrastructure/N64ZipRom.cs", - "bytes": 4297, - "sha256": "4b423738123b2e6eadcf20cbd5976939f8d7593031d1fe7054c361a4b397f8ac" + "bytes": 4203, + "sha256": "b067e11d6d6993e90fa3e6d32d8ae1c53ccb040e58e12de79add29a8055f67c0" }, { "path": "src/Ludarium.Infrastructure/NativeBrowserPlayService.cs", - "bytes": 14764, - "sha256": "5d2a0320e65a600d01e421e537b8eddf065b7a7a3194ee4d50adb438be660c7e" + "bytes": 14505, + "sha256": "7ca339a89f561de4e4aad5296530c877d7da39a137dddc9bb191bfd25bf24762" }, { "path": "src/Ludarium.Infrastructure/PostgresStore.BrowserPlay.cs", - "bytes": 7562, - "sha256": "994124d22e055a0e394f902534580f16a68155bd8d8e05db82006f9586459027" + "bytes": 7434, + "sha256": "f987efbfb879dcb6c63bc12789e159787baeac96efc2eece5885d31ce7c01b23" }, { "path": "src/Ludarium.Infrastructure/PostgresStore.Firmware.cs", - "bytes": 3000, - "sha256": "6650006a18a791f5c805d315ee6fac05c858c1ed4853b49e33850febacef2a76" + "bytes": 2956, + "sha256": "a1abdbff1bcb7dc6e4387ee25f8acd77b593bea497c8f0afeb4a8b75ab5fa81f" }, { "path": "src/Ludarium.Infrastructure/PostgresStore.GameDataVault.cs", - "bytes": 16973, - "sha256": "1100fc3723c11740a241db5965d89baa0fcc10dc0c69d2b63515fc103c5cbe01" + "bytes": 16665, + "sha256": "2501fc9f5cf17aa97dda86b181155dfa60d839b92c60aae3666299a09e15ae08" }, { "path": "src/Ludarium.Infrastructure/PostgresStore.LibraryExperience.cs", - "bytes": 36003, - "sha256": "3d4aa91395aa22faa17935fe226e1935710375f60c2d308a91b21a0ccb2d0c8a" + "bytes": 35500, + "sha256": "5fbd3e9f3408c054c1fd03e6647100bafbd2e0f00b8e5c09f563672ed50d6eec" }, { "path": "src/Ludarium.Infrastructure/PostgresStore.cs", - "bytes": 154137, - "sha256": "565d837c5e470c0ec8f5dabb7818f302566363c69789c1a3d6ac6c6427ec5013" + "bytes": 152052, + "sha256": "acffe16bde5779a5e94393f3c5b527238dabf62679e2f010dc0ea4623242d2a9" }, { "path": "src/Ludarium.Infrastructure/RawgGameDiscoveryService.cs", - "bytes": 3444, - "sha256": "09aae593013a3fa6a2b680efd817e2884db5c1452d832ce0f7a34b6cace4a6c2" + "bytes": 3380, + "sha256": "1bd37b3f2a465be66b60dfb2d99b3fe5c3c8c539695ff535b55f11d6f15799ff" }, { "path": "src/Ludarium.Infrastructure/ReadOnlyLibraryFileSystem.cs", - "bytes": 6901, - "sha256": "4f7b66e376bc60a681383a338330a6da56127ff1b49d131d6cec45097fb557c7" + "bytes": 6771, + "sha256": "18c869afd56edb054499f243d25527be22c8dbf62f1913ff1b9a3a51d1163d65" }, { "path": "src/Ludarium.Infrastructure/SupportBundleService.cs", - "bytes": 3203, - "sha256": "650dca703d679349af547594a17504da2761e183926e6847a25e54f7d807777d" + "bytes": 3165, + "sha256": "08b61ed7acd075a3313a91e57859c9dada52548b60cabe07f4c1908aa5695944" }, { "path": "src/Ludarium.Infrastructure/SwitchRuntimeProvisioner.cs", - "bytes": 2866, - "sha256": "c645a8865531eee84cb938566fe2106382fe6dded31d8cfb28de3998dbc10321" + "bytes": 2793, + "sha256": "f2d11752bd722b67f38523f35474e28190a20d7a5852159375f40943213246f7" }, { "path": "src/Ludarium.Infrastructure/packages.lock.json", - "bytes": 2002, - "sha256": "f6fb5de3f1e3017f8bb2a7961cbeefb7418b0711b5a41fb988b70661cdd23b12" + "bytes": 1947, + "sha256": "a3c50e3e1d86e1b0e7f0d15f0fca8e09f5f36b1a3ca3b9b918e7be60e6195cd8" }, { "path": "src/Ludarium.Web/.gitignore", - "bytes": 277, - "sha256": "d50ab07e11fa4bf3b1c7c3312e1d7baeab56cca756832ccf40476823ad2a38b7" + "bytes": 253, + "sha256": "fe718e7babb14f3cbad2d97f08889b9ce5215ed3fe0e43b2b8cfbfb3b9b844e8" }, { "path": "src/Ludarium.Web/e2e/accessibility.mjs", - "bytes": 6475, - "sha256": "db03dac95ebf763a67ddfefb6d1bbdc77c03f4c646ff497a8af18aee16fea806" + "bytes": 6333, + "sha256": "d5390bab85c7d96e92c9b9e18089022db93c60f0f0fc31815d33fcf02bab63de" }, { "path": "src/Ludarium.Web/e2e/archive-atlas.mjs", - "bytes": 5579, - "sha256": "f6383c35b1da480947601dd92b0ba317f2fa55b7477fdff4182b061fb4202928" + "bytes": 5466, + "sha256": "28fb5a9a3bc00eb2997cc8a63d17cd0836aff5b63ff1833556787eff5d1fe9b7" }, { "path": "src/Ludarium.Web/e2e/game-data-vault.mjs", - "bytes": 6066, - "sha256": "89374a4fe8b5c733b0c5ac7f378dcd2640a062baab02129b0d932170a8465af1" + "bytes": 5938, + "sha256": "b1123730c46f9513b3ef809874d86999733b3199bc17aace93a1bdc6b50aa93f" }, { "path": "src/Ludarium.Web/e2e/live-browserplay-core.mjs", - "bytes": 7344, - "sha256": "e564f55384ba320f064db36f8f8bb3391d6e9644eb703ab3e6b629dac142907c" + "bytes": 7222, + "sha256": "5b074293a9278fe82af7b3685b337d380af9c8bcc31bdc85978617b337679ad3" }, { "path": "src/Ludarium.Web/e2e/live-browserplay-n64.mjs", - "bytes": 5971, - "sha256": "1b6471c502457e2c903793f60fe07227117555580deb42b562dbdc35b8e6e4e1" + "bytes": 5868, + "sha256": "ec956a2a75d495b4b6a6418314028e0c10e3c509273a2a3a231dda536ff605db" }, { "path": "src/Ludarium.Web/e2e/live-browserplay-ps2.mjs", - "bytes": 4003, - "sha256": "19cae94e8609418d59fe797fa981afbf82ffa09d4a782cbf06ca0b7193d7b720" + "bytes": 3932, + "sha256": "3f84dce7cfb6ccfea881d40514c5173825afc2ec76b449606af40698f9974616" }, { "path": "src/Ludarium.Web/e2e/live-browserplay.mjs", - "bytes": 4924, - "sha256": "35966deecb4fa76edce79c8b16d10dc6526dd88062a0ac81e997c95d46b2d5bc" + "bytes": 4834, + "sha256": "e4a0f313dc7e76af6596455293cf9d29f82ba67de157a6a16d86fb0c03bc101f" }, { "path": "src/Ludarium.Web/e2e/live-switch-player.mjs", - "bytes": 4212, - "sha256": "3718e7a7058739c2f2cda22ddd1a095c8a13a19583df32f9bde3437631a33309" + "bytes": 4125, + "sha256": "7ae016204cf60c32c1c858fb468352874e2ec58af8d70161f4d1e9b68f6725b4" }, { "path": "src/Ludarium.Web/e2e/mock-visual-audit-api.mjs", - "bytes": 8480, - "sha256": "cf3fa4c1ef5b0e6b0733243a4d8cffad771ea3207dbbd646d353c6e69b73da87" + "bytes": 8364, + "sha256": "36fa5c47d29c5981ffc2b805d61b74a123afdeaba01eca50c50c36bb92bb2934" }, { "path": "src/Ludarium.Web/e2e/workflows.mjs", - "bytes": 28106, - "sha256": "3339adec2a2a12107342556268035212802510de73eb21fd6b6e4868a7a34db5" + "bytes": 27605, + "sha256": "95457430a862ea6d81c3ceb3402cdab112c651703d5ce437ebf17b098b5bcde3" }, { "path": "src/Ludarium.Web/index.html", - "bytes": 558, - "sha256": "9026fc418f9481b182f71aaaf8809c17fee0844100fa5d481ef1c1cdc87d5b01" + "bytes": 543, + "sha256": "34a3a6160fcb08b12ea45b7ce4edfd4730c0216a41dac9ae0121b93fc0163503" }, { "path": "src/Ludarium.Web/package-lock.json", - "bytes": 61596, - "sha256": "d387a33d6bdfa5045cd0a4dba082612191d8cdc993d39f8abc516ea9e14c8761" + "bytes": 59814, + "sha256": "4258e3fcbe13198587504ad043d8ca114cf6d637f388977ee04c00d40d83f2b3" }, { "path": "src/Ludarium.Web/package.json", - "bytes": 1156, - "sha256": "5732effaebe4b686210094607c972858fffb95c6125090b31765dab6ace3a027" + "bytes": 1116, + "sha256": "36cd72b8511789343ad5b23e3d6f03011fcc42e1375461c695ba9dfaf375cb29" }, { "path": "src/Ludarium.Web/public/brand/PROVENANCE.md", - "bytes": 1689, - "sha256": "571824ebb5c70c72a9a8db4bc574347792cba6e498579d0c9be841d2f2c1762c" + "bytes": 1674, + "sha256": "9b2c59ce472ee2ff308a2aa28db8c14819a1f5d3f9002e87d100e61e8156fbf4" }, { "path": "src/Ludarium.Web/public/brand/living-archive-core.webp", @@ -870,18 +880,18 @@ }, { "path": "src/Ludarium.Web/public/icons.svg", - "bytes": 5055, - "sha256": "7ca2d67c9c3aebf50cdc8709ee8aacf8cdb8cc7ea6325ea94939caef5da1c53d" + "bytes": 5031, + "sha256": "b45fa506195cfcdef406ba9f0c77b36ddc1a7c224040926ec70abc2fdea7b93a" }, { "path": "src/Ludarium.Web/public/n64-player.html", - "bytes": 2165, - "sha256": "49bbd519c123da8e8b8ff350a978bbd3e1a62fcb1c618340d8b6c5d0433dcb56" + "bytes": 2131, + "sha256": "3e699722ce134981c4be5a110429dea624360d0fff778c69cd0502b9d6781eb3" }, { "path": "src/Ludarium.Web/public/n64-player.js", - "bytes": 8064, - "sha256": "22ad1596dfb6159e03e99eb8bd09e26009f59a7659cef628bf233c6b1828068a" + "bytes": 7887, + "sha256": "745fb6088f5100168003ea5f9142288d6e4f4adba095d65a680a4f0bb1d367ae" }, { "path": "src/Ludarium.Web/public/platforms/3ds.png", @@ -890,8 +900,8 @@ }, { "path": "src/Ludarium.Web/public/platforms/README.md", - "bytes": 3622, - "sha256": "d3c484d2d016199262c1fe437de3a2bcd731ef265f811cfd46b1a3a5a09fe9ea" + "bytes": 3587, + "sha256": "c14cb5e5812a329a887bd0d6a1b71ffcf46e695a2b6aa88cf4770f61f1fac0f4" }, { "path": "src/Ludarium.Web/public/platforms/gamecube-cutout.png", @@ -925,8 +935,8 @@ }, { "path": "src/Ludarium.Web/public/platforms/generic-platform.svg", - "bytes": 1010, - "sha256": "508ecf673b636e119d820f9227eb226220f0ec0ef90009615df7b95a322b9026" + "bytes": 992, + "sha256": "4f4f2cf51b96432e89686f838bb15619befc781823e9f81bc19090be965ac9ac" }, { "path": "src/Ludarium.Web/public/platforms/n64.png", @@ -1035,78 +1045,78 @@ }, { "path": "src/Ludarium.Web/public/player.html", - "bytes": 1200, - "sha256": "2404ea808a2f9f752bb7d9131c1fb628fb6c639aecff5333e7c70030d02995fa" + "bytes": 1177, + "sha256": "d9bf2bb1b1882dc1e90705f2e14d9c862dffe308be8310627dd993ba33054109" }, { "path": "src/Ludarium.Web/public/player.js", - "bytes": 6885, - "sha256": "c0d72cfb52e97be990c4b29221c15888b6360dc5efebcf377d10c11619613954" + "bytes": 6749, + "sha256": "8d887f42d38b9a38f98a53db5b2a7c6f2c68a43b6254de84cce9821ca4393466" }, { "path": "src/Ludarium.Web/public/ps2-player.html", - "bytes": 1457, - "sha256": "ab350ed8601c87dc5164e171249b7b5b620bb203f06e6162e1f5f8fd3942133f" + "bytes": 1432, + "sha256": "5946492483141c8bc7406e23c108b7cf0f21d856555d06499d664e2929124321" }, { "path": "src/Ludarium.Web/public/ps2-player.js", - "bytes": 4289, - "sha256": "0ce0cd0ee057091c2fe9a4925f141953eeb55ad90ff179fd3439214d02294421" + "bytes": 4188, + "sha256": "c24e9334fd7ca8044ab480aa9b6a9dcef1d302b60398b87ee2487abdbb8330d7" }, { "path": "src/Ludarium.Web/src/api/client.test.ts", - "bytes": 1566, - "sha256": "ebfe0745c07ef9124208b0e32c1be28c0d6646135d5e6c3e8e3cc0bbc6f00744" + "bytes": 1520, + "sha256": "6a88fcbf3dbf4bc93c58e9ce5e66489a909e8ef6b30266de732e993478a2392e" }, { "path": "src/Ludarium.Web/src/api/client.ts", - "bytes": 4438, - "sha256": "d764a2e009881b10e6e0344a1d4c17be9b2113f50a532daa221c3df5db129a25" + "bytes": 4301, + "sha256": "047a8666f2dacaf34d4a1cf52ef36f873d5e84471278f2b1e1a4518e3c7fa4c5" }, { "path": "src/Ludarium.Web/src/api/nativePlayers.ts", - "bytes": 3754, - "sha256": "8b4ccb385fbe136975cc7c42dd37b3b6c5816a9c8e2c8e8c5206f74b7401efa7" + "bytes": 3679, + "sha256": "5b10d95ae556026ecaf60b76be6ed87258a9dc609fd9d70167b84bc97f2e488d" }, { "path": "src/Ludarium.Web/src/api/types.ts", - "bytes": 16448, - "sha256": "d74477cc92b7ced32f440992b1c308b4e67585ed6e2c71fb83395dd265b3c16e" + "bytes": 16005, + "sha256": "9b68125adcda8cea1d83030b8891a0436be6660de5d1ddc1085b176d4fde1e17" }, { "path": "src/Ludarium.Web/src/app/App.tsx", - "bytes": 4220, - "sha256": "21dbf53c9ad4dd8f11a9571c1589766f3470a460eec797f82d5186f294a12b2c" + "bytes": 4115, + "sha256": "7d2475025b9984a5ca703a1f95e38b26e524be2cab6ef836140c3611d93f186c" }, { "path": "src/Ludarium.Web/src/app/AppShell.test.tsx", - "bytes": 3806, - "sha256": "d1089b9f0b1cdab7e903bc05a09ae55f2195314909145e2381ca56cb2b0ef187" + "bytes": 3731, + "sha256": "6cce1e42aeaf89b558e1f367ea19a4a55b6eb7303c506645e073453b23c3bfb4" }, { "path": "src/Ludarium.Web/src/app/AppShell.tsx", - "bytes": 13277, - "sha256": "8a5931b6d5539077f9b0fed665f3c2351141485d7e0d053e69229f57f259999e" + "bytes": 13002, + "sha256": "4290287e6ef92678f87a35edec9676a194a71e3ca90645594ed36fc0ee4de447" }, { "path": "src/Ludarium.Web/src/app/Login.test.tsx", - "bytes": 2698, - "sha256": "f90262c817fc65d106e791d42c6b33542ae04365022f4c2bbb619cbd41728559" + "bytes": 2639, + "sha256": "8c54bc1bf3da9f06db4b9e3841c5c2df539517d0fabeed75e55461fcb230bfba" }, { "path": "src/Ludarium.Web/src/app/Login.tsx", - "bytes": 5541, - "sha256": "7a33d2787b7bcf8e3a1a67e0d619aac3f7da36a10b4a97ceffc90e3787d457c9" + "bytes": 5425, + "sha256": "ed1d4776523e8e49dd5046b654edb341082f27b641cebfb87703c397aea33db8" }, { "path": "src/Ludarium.Web/src/app/routes.test.ts", - "bytes": 1307, - "sha256": "57e866871f3718d8657988c6debc11a4b7e2c6bb652412345ce668ba8eacf699" + "bytes": 1272, + "sha256": "4753222b182bfebc27744a0bd856ff9c28c9454364b9464cd6e831d78bd07b4b" }, { "path": "src/Ludarium.Web/src/app/routes.ts", - "bytes": 2595, - "sha256": "c583c09196d46b5d53e2aef5d80b273491b23480f3156135ffef9d878285b682" + "bytes": 2520, + "sha256": "b504b1ea59a9a42a73d07e8fbcb779b3e5b9eb09b9f12172cae1afdd1d31741e" }, { "path": "src/Ludarium.Web/src/assets/hero.png", @@ -1115,578 +1125,578 @@ }, { "path": "src/Ludarium.Web/src/assets/typescript.svg", - "bytes": 1304, - "sha256": "c1f92be30cbb7159085e05cedd9dd3da54d04f72ad54f6df314739e61845917e" + "bytes": 1303, + "sha256": "e45b2f008f0a40c1011b0fd460081f8bb00df063a41240449159da164724d96c" }, { "path": "src/Ludarium.Web/src/assets/vite.svg", - "bytes": 8710, - "sha256": "2f1f6c6f90a0ef7422cbb4cfafcd8ad329c507a18afdc34cc21fa72179b9c54a" + "bytes": 8709, + "sha256": "5be21acd42eb7b896e517f4e0f0f11eb5c5d9e54fbbcebe9453f033008fcca6f" }, { "path": "src/Ludarium.Web/src/components/ArchivePipeline.tsx", - "bytes": 1612, - "sha256": "76282ed54c4b258f4e096a0d964fd415e9d0fd5d1f4b384a9117cbbbc53ef37e" + "bytes": 1577, + "sha256": "0f12a84ab3d5f3f82f9f5418d9621bcad86b3d1a991773b2ce440e875dd3e822" }, { "path": "src/Ludarium.Web/src/components/ArtworkPreview.test.tsx", - "bytes": 1731, - "sha256": "ff6fa6b3e8edf531f3c916499bbe73e7851bc519cb4db6e0b253e6aeca1c01a4" + "bytes": 1688, + "sha256": "9520d4e40c82d84960de5cf019dd5e90b27471dea0634eae9a7b5c2f13ddee18" }, { "path": "src/Ludarium.Web/src/components/ArtworkPreview.tsx", - "bytes": 2674, - "sha256": "3574a5189daeaf3ab519403130fb771b5424295c635b7081250cadfec456356d" + "bytes": 2593, + "sha256": "72bd1e5773ec5f5e05dbaa00bdb4e1565385f9a34fadcf51f85dc1d7353edcfc" }, { "path": "src/Ludarium.Web/src/components/ConfirmDialog.tsx", - "bytes": 3933, - "sha256": "d1d3227ae038ea014eaba5bf4c8aecfee2d5070cc577a89f0eb1bb7bcfcc24e4" + "bytes": 3837, + "sha256": "c3ed30eb4ba67e833544a6badea991c9fd3cbd1fc20673a2991f3c9645211019" }, { "path": "src/Ludarium.Web/src/components/GamepadNavigation.test.ts", - "bytes": 1153, - "sha256": "18fa2b483ce40f278cabe02aae85eb6814a16b982f1570a8dd6961e6bd68eac5" + "bytes": 1128, + "sha256": "a4c13a7652ea8a69e171ae6c33b6bca9855149e609937ddfb8c65d4cc96c2a98" }, { "path": "src/Ludarium.Web/src/components/GamepadNavigation.tsx", - "bytes": 9180, - "sha256": "8aac8c706253ea870ac50f33adcf67938ef52c388ba8b30e8b25f20b5efcffe7" + "bytes": 8954, + "sha256": "d66a79fdfbf5ee604e668acf89f8b1e4d4fcd61500d799517d7da370024a8e2a" }, { "path": "src/Ludarium.Web/src/components/GlobalSearch.test.tsx", - "bytes": 2846, - "sha256": "89488742807a16dff00da7f1691060fee3acde04c0934b09c8ad4f4f8881311b" + "bytes": 2791, + "sha256": "3a283226d3d9f35a4d154f959185002ac09440fdd6a08d8f351a79305d14f799" }, { "path": "src/Ludarium.Web/src/components/GlobalSearch.tsx", - "bytes": 10288, - "sha256": "e9ddacb102e62d78b5a3586eefa44a4eb5e53785e8b8ac53302d05d787e11e3f" + "bytes": 10058, + "sha256": "d65e21d8b35ff2fbea174c5e291406cdcc1b28325590ae562c7cd190ee8b0458" }, { "path": "src/Ludarium.Web/src/components/Icon.tsx", - "bytes": 1036, - "sha256": "722dd8d2065e7e64447fb72d68435ab1878dab1a4965ad3e4fc9ac110030555d" + "bytes": 1002, + "sha256": "7b6a8234f2843aae590ccb2e1c483927940104e26fbfafb1c77ead26f3016dfc" }, { "path": "src/Ludarium.Web/src/components/Overlay.test.tsx", - "bytes": 1614, - "sha256": "d043845c7432111995e41ad71a7e0482d0ab4a94041455c228028428aa12add3" + "bytes": 1576, + "sha256": "8216de40b23a79e3bb1b3aef202c072aff414f6b7359e2d8127979d51db61be7" }, { "path": "src/Ludarium.Web/src/components/Overlay.tsx", - "bytes": 4725, - "sha256": "e1f4e0d0ced51fd0ddaceabd94ada4b109d3267a932e6f989d5dfd03c7cbc95b" + "bytes": 4577, + "sha256": "5c3b0303d888a61d48e317fc150a4d1c6c7b82633fe520a4b21ab14bb03a6093" }, { "path": "src/Ludarium.Web/src/components/PlatformVisual.test.tsx", - "bytes": 2132, - "sha256": "2991520cf521d6c50fa6ace9ff7b08ee200820dfdf238388d36ff9f14b541ba0" + "bytes": 2091, + "sha256": "e683f75ffb8d6665044330e5b943642f7a5a5d7e9bf50252ff3040c84ecaf734" }, { "path": "src/Ludarium.Web/src/components/PlatformVisual.tsx", - "bytes": 5713, - "sha256": "307ef825ab85c05e35a6fd5ebe0d354f69b6f8f3cfe46ea8f4bd4dd821622f29" + "bytes": 5638, + "sha256": "acfc58cdce5e9f0d42a52623b60abeb9759e5612c981a6baa5223a11671e0a8c" }, { "path": "src/Ludarium.Web/src/components/retailCover.test.ts", - "bytes": 813, - "sha256": "b39066f2abbd4415955016c523684d4e70400947b118858ba3a84b86fa2f3f69" + "bytes": 796, + "sha256": "323469809e6f1f1641abf1239f7bb0161876d916b620758ae01c56bacce6b605" }, { "path": "src/Ludarium.Web/src/components/retailCover.ts", - "bytes": 1116, - "sha256": "4df818cfb61508ba4b85dcea5a041db6ef9615ee01714e63f707a511bb534b29" + "bytes": 1085, + "sha256": "6b0cf57a63e641ff07751b772bcd9ab8292f4dc9182f8741d68f061e65b42c05" }, { "path": "src/Ludarium.Web/src/features/OperationalRecovery.test.tsx", - "bytes": 2791, - "sha256": "992c84cb351effa25788007b14987b2a48c6b7c591405328c3b74df676b4cd06" + "bytes": 2736, + "sha256": "e92a0ea2623614d375befa308f1e11146f14ff0bb5a261ba2abc82c651790ec8" }, { "path": "src/Ludarium.Web/src/features/activity/Activity.snapshots.test.tsx", - "bytes": 2581, - "sha256": "e96c5631fdfa21c16c175c8a66251a5b2dfb0ca3388ce4d1bc48e2e07c8629fd" + "bytes": 2524, + "sha256": "5410b36884939fc0c14e594e1bf3ce54e5dfa16b4400a3bcb0ff3caf189e8361" }, { "path": "src/Ludarium.Web/src/features/activity/Activity.tsx", - "bytes": 27823, - "sha256": "aa84096298f96d49997b2067f3d37da3fa8d716f36575a5d5fdaea006626623e" + "bytes": 27228, + "sha256": "c29de60a4bdc3ef22e3047b21906caf3a90cc447321462965cd6a0311c2b2f56" }, { "path": "src/Ludarium.Web/src/features/attention/Attention.lifecycle.test.tsx", - "bytes": 12816, - "sha256": "dfdc7584ce3b63e193732499250807a01b4c832c4efb4e9817b423c5447ed4e2" + "bytes": 12564, + "sha256": "c29dd6ea46a8443b1ece0852002437846611fcbf7e4de9b822e2d4dcf060ea31" }, { "path": "src/Ludarium.Web/src/features/attention/Attention.tsx", - "bytes": 31503, - "sha256": "8a87ef3f6f770022dd6f206f38ff655752a0c104e33c525a1fa4816be51f6b36" + "bytes": 30960, + "sha256": "a57a4270c7e3317e76c0d40c4c8423e8821e4327eed357759769421bba574a9c" }, { "path": "src/Ludarium.Web/src/features/home/ArchiveAtlas.test.ts", - "bytes": 1472, - "sha256": "54a4450f8f2098586449874fea9cb23b2855719ab1216af0bbc16a9b19ada9c9" + "bytes": 1436, + "sha256": "ae0b1b8863c27fe13a01792bfa6be432b05f0fa710435a69ace19aa7eefc46a0" }, { "path": "src/Ludarium.Web/src/features/home/ArchiveAtlas.tsx", - "bytes": 7704, - "sha256": "1fedc3df4b687263f808c44b5fc0f250ae25020b16a28f8583294909caec3caa" + "bytes": 7530, + "sha256": "176ae52ec4ac84abde35874decc0a82e5e47aab8ed6148b0d44e2e1422137d5d" }, { "path": "src/Ludarium.Web/src/features/home/Home.recent.test.tsx", - "bytes": 5363, - "sha256": "adbc68e07cbec461b9befebeff1c7c70f73097c8bf9ccd46c470daf58b086878" + "bytes": 5288, + "sha256": "bcf4296cd2c6f65df9517ddaa3a4a095e1e9707f00fce459e162f0d2a5095ef1" }, { "path": "src/Ludarium.Web/src/features/home/Home.test.ts", - "bytes": 1051, - "sha256": "8e9f3d686b6c700f360d4a0732f13059602e8551edfc9d91e04dc62a793ba2aa" + "bytes": 1026, + "sha256": "add3b082eb1c49ee64c7d2bbbab4dcd6cc8ff30b8fb8e5b7d468d26368e9cc2f" }, { "path": "src/Ludarium.Web/src/features/home/Home.tsx", - "bytes": 27884, - "sha256": "81618e6f50accbefced8b6dc0b3b7b2c1bd92fe6ca72626472b9a6d7647f06fe" + "bytes": 27330, + "sha256": "817798ffe6f508556d1cae6785ee4143c4b1542301d305b8702153be5b92d3a5" }, { "path": "src/Ludarium.Web/src/features/library/BrowserPlayer.test.tsx", - "bytes": 2069, - "sha256": "d73f16a960165a6545f3e4c39cacb70fd8f304f58e3ed13b868ccdf76f082a81" + "bytes": 2021, + "sha256": "a2859064c04ddbae884e014523d51e10b90bdde167319bbb3d6c193762beda6f" }, { "path": "src/Ludarium.Web/src/features/library/BrowserPlayer.tsx", - "bytes": 2711, - "sha256": "91eb99426487e6319aa639df8a6622813a959dce4548c0c3482e1c75472fb829" + "bytes": 2676, + "sha256": "3ebd93547cb18d84df73603bf79dfc8764294123fa2ca60c3bd8ddb35d69784f" }, { "path": "src/Ludarium.Web/src/features/library/GameDataPanel.test.tsx", - "bytes": 3845, - "sha256": "8a3dfc3a23ee66d46b09d8715287274b9f690932c38e43c39a415c3f91ae4669" + "bytes": 3776, + "sha256": "15b410c4566677c75e96db59796c1ba42cdb88a9d024c970e8aa2c0c3820fc29" }, { "path": "src/Ludarium.Web/src/features/library/LibraryWorkspace.test.tsx", - "bytes": 39484, - "sha256": "a73e44b8d54d741536bd770189eaa0f812e8ba2af626948bc389477dabf4eace" + "bytes": 38904, + "sha256": "241b8012413eb93601160607e9ebdad9a3dbb56b68f0935a6e9205badb3f1174" }, { "path": "src/Ludarium.Web/src/features/library/LibraryWorkspace.tsx", - "bytes": 124129, - "sha256": "4ce89d9c8c95da28e48ac84e53c5bdff4b4e42b6d4aabb0e5c53267456ec1d49" + "bytes": 121975, + "sha256": "4415fbd8dc11d0f543174c722646adc47c1ad1ac2cffaeebac87116a95e996d9" }, { "path": "src/Ludarium.Web/src/features/library/NativeRemotePlayer.test.tsx", - "bytes": 9185, - "sha256": "f886486b6f7704f491b00595c1aac878b8a0424c3c23963c4107ab0984dc3d4a" + "bytes": 8987, + "sha256": "57102933fba5e12fff717b9ae3751a8b6346e4f2fc901accafcd0892472e4634" }, { "path": "src/Ludarium.Web/src/features/library/NativeRemotePlayer.tsx", - "bytes": 12378, - "sha256": "537262ce417b40e95ac5cc160277777bddf0d97d1b1c86bb072f429c08ff9a0f" + "bytes": 12148, + "sha256": "3950901c29b704585d027620227ed0dceb1da36c42d2bc78a211a5281043f3f0" }, { "path": "src/Ludarium.Web/src/features/library/libraryPreferences.test.ts", - "bytes": 933, - "sha256": "daa33894c4fed2560e9d3eb0bfc6ac7b97fa30ea2e220127a39de19c48a8b992" + "bytes": 912, + "sha256": "d1b508b24698a8bb6211b59b08c950a73df34e61496b3ed5670706cd211ebc10" }, { "path": "src/Ludarium.Web/src/features/library/libraryPreferences.ts", - "bytes": 700, - "sha256": "278b47bea955421210ff7202d7f83b8f76bed0f16eebc0af0ce2eb679567e00f" + "bytes": 686, + "sha256": "55d021bc84e3f72a0bd4cb29073710bad899f4d3330da664231e03718e1234a4" }, { "path": "src/Ludarium.Web/src/features/settings/LibraryRepair.test.ts", - "bytes": 1855, - "sha256": "21578d8e7832de132f9ecaad08e98338cc3080cb7f2c196d9976792d8be602ec" + "bytes": 1819, + "sha256": "58a63249f178d8ef475b6cfca2ccc9a26eba8732902b1e4ca978c98a45a2230e" }, { "path": "src/Ludarium.Web/src/features/settings/LibraryRepair.tsx", - "bytes": 17583, - "sha256": "40c15ddee6385ff2b7c389ab5f08b5f3100327a1dae91f0300a0a47ca8468605" + "bytes": 17319, + "sha256": "1c617e9fa9c709f167a932630acf631c120b98cc8a620c9c0d1222ef40e8e0ee" }, { "path": "src/Ludarium.Web/src/features/settings/Settings.tsx", - "bytes": 44594, - "sha256": "be6c82095ee1bccc7e558e5f129d1eaf85e2b7fcec4ed033b586c9f4610cd2bf" + "bytes": 43731, + "sha256": "29b0cbba8f313ebd315f8fb93a582aa08989a853d977950f57966b4f23b35c4d" }, { "path": "src/Ludarium.Web/src/features/wishlist/Wishlist.test.tsx", - "bytes": 4822, - "sha256": "2f62d9e38ae0c775249902fd8de30d9288ec6f965450d0fbb52ee38b1ecfef35" + "bytes": 4755, + "sha256": "f9bc7e2d47a63bd9c9b6871f583348d4a2641eabd9308f0dc57e796165b30afc" }, { "path": "src/Ludarium.Web/src/features/wishlist/Wishlist.tsx", - "bytes": 19562, - "sha256": "d0b71d6f59c5717a5e43570c915ccc5481ce6e2adbb82168125b031dd39a496e" + "bytes": 19482, + "sha256": "e13c9328df27b9b0a1040f73ae7beb3f03f1543d2aa3918751cd1e76763de52c" }, { "path": "src/Ludarium.Web/src/i18n/locale.test.ts", - "bytes": 8513, - "sha256": "926d4e72f6e81d66ddf2de4e94867d0c9397e54e2b902de7e34bbe80739418fe" + "bytes": 8386, + "sha256": "b8a3069312537bf87a17766b8ff0780bc8f0c128071da728d80310bf0d3952e1" }, { "path": "src/Ludarium.Web/src/i18n/locale.ts", - "bytes": 68975, - "sha256": "73871b26e9b415b5e899821da7f5911ad42511839e385a7aebe9ed2b4989c72d" + "bytes": 68418, + "sha256": "a2dfdfde5f50c44d0a075a0156b1d48034408e492bf4016c95542e87b05643b7" }, { "path": "src/Ludarium.Web/src/main.tsx", - "bytes": 331, - "sha256": "02bd32deb67e73bfbed52f3344aead9720118714ef2ad733d86b33f196901471" + "bytes": 319, + "sha256": "2d00458a9b340a2693fd5f2f9b73377a657681715b06f2af21d6bfa7ff8e3938" }, { "path": "src/Ludarium.Web/src/styles/app.css", - "bytes": 235154, - "sha256": "aa5380a5453e182133e1857753dd21a4c576896af4bacbdd03511cbb9073cd8b" + "bytes": 229446, + "sha256": "a5c3856002e304be6df88fb6c37f501cb19ee22cce806600d8a17f6412b99666" }, { "path": "src/Ludarium.Web/src/styles/coverSurfaces.test.ts", - "bytes": 1367, - "sha256": "0dc475ea123a48d76417e76408922ecf638fecbcb0f6dea2d7924d9e7383b104" + "bytes": 1340, + "sha256": "d58511149926823b1bb08e118952bcc65b7b8b66d3ad6bb1ceaf4a27115c66ce" }, { "path": "src/Ludarium.Web/src/styles/stylesheet.test.ts", - "bytes": 6612, - "sha256": "876d778421440b91f7eaeac85c422ff30afe879ac0300d017a52815aa88fd280" + "bytes": 6483, + "sha256": "2868630404716b0d8eaf97602cf8d3f9d36bfd6dc0172d4f0ba519315a5133aa" }, { "path": "src/Ludarium.Web/src/test/setup.ts", - "bytes": 44, - "sha256": "60aa525f7ffa6bfd3045d22710d4eeef3a5ff2074ecc3dbcef99374badebad17" + "bytes": 43, + "sha256": "9b328c4843431fa76d8de00008fc159e95f99a840211085ff3b8f25e53d14409" }, { "path": "src/Ludarium.Web/src/vite-env.d.ts", - "bytes": 39, - "sha256": "424faf9241dd699dda995b367ed36665732da1e6ec1f33b2fd40394488ecac92" + "bytes": 38, + "sha256": "65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5" }, { "path": "src/Ludarium.Web/tsconfig.json", - "bytes": 617, - "sha256": "6ca237136b2c74957b2cbcff9031f96d6a7e1143afc95c5f5ef90f84cd1692c0" + "bytes": 592, + "sha256": "29c18dfe4bbe43d586c3a768cb6a56b687e6451d800c43f1d9a647de76d64d0b" }, { "path": "src/Ludarium.Web/vite.config.ts", - "bytes": 464, - "sha256": "99cd55b3bc3357ec2616da2eddbe065a2ea502222884ad16f19fe220887f483f" + "bytes": 448, + "sha256": "7a8c3be63ebd5ecf5a5cb54b95e2374e8e7b582ee2586073b5d657d2f4b12766" }, { "path": "src/Ludarium.Web/vitest.config.ts", - "bytes": 241, - "sha256": "0b169c90a542aeef4774a1abb6ec8f18361cd891838813eba04323b83488d6c9" + "bytes": 231, + "sha256": "e2eaaa5ee490b0d1e50ae8e710a748e43d7095303e4b57bcbcb149e39291b067" }, { "path": "src/Ludarium.Worker/Ludarium.Worker.csproj", - "bytes": 648, - "sha256": "acd6ff09d7373dcef9b8abb8ed32201763e47e81c68f0a745e0267309163c867" + "bytes": 630, + "sha256": "57792ddeea7db26181d56f1cbd7f250525690e55efaea930057a503c11b76209" }, { "path": "src/Ludarium.Worker/Program.cs", - "bytes": 168, - "sha256": "afcdd069c5fb771463ddfe1ea53987af20f9dcc76015c9c5b3ea5ceb5317280f" + "bytes": 161, + "sha256": "7af05619b82d933231bce6ba9b0038e756650e8703c132258230011308112807" }, { "path": "src/Ludarium.Worker/Properties/launchSettings.json", - "bytes": 284, - "sha256": "0fd8eef9b546f5d000576eff6a0ef02b9b0ebc45c851d310dbc578fef99ab2cb" + "bytes": 272, + "sha256": "65af863f5d64dc14eb1ac3b8b2b9c1f32d8c734350c49bd458e30f845f12f25d" }, { "path": "src/Ludarium.Worker/Worker.cs", - "bytes": 502, - "sha256": "85a36c6b1eed5c8e3cc420f835094a48734e4f83aa1fbdaf54b7a96863959ba6" + "bytes": 486, + "sha256": "5a1453f2bb8772c20bad69b9293957e6923bd7153ddd6d729921e9a0c42cad7b" }, { "path": "src/Ludarium.Worker/appsettings.Development.json", - "bytes": 137, - "sha256": "ab16b7b75d012475e615a41c21000c9215c6e02cd70b9c2618d25d885aa6ff33" + "bytes": 129, + "sha256": "93ad1e10cea3e4ceb9d81081b69cd69e54eeea86fc6120f6dfb6377814fceae0" }, { "path": "src/Ludarium.Worker/appsettings.json", - "bytes": 137, - "sha256": "ab16b7b75d012475e615a41c21000c9215c6e02cd70b9c2618d25d885aa6ff33" + "bytes": 129, + "sha256": "93ad1e10cea3e4ceb9d81081b69cd69e54eeea86fc6120f6dfb6377814fceae0" }, { "path": "src/Ludarium.Worker/packages.lock.json", - "bytes": 15681, - "sha256": "c6fedb1e1561316ec56b6e1961a5572194374d800a202772e73604b5ef1fabbe" + "bytes": 15347, + "sha256": "64486ba27c2b966fff9bf1d3de5b6e13f4fe86f27b0c3e7aece61b1fe1309d92" }, { "path": "tests/Ludarium.ArchitectureTests/DependencyTests.cs", - "bytes": 26717, - "sha256": "0d4d7b63296801c4002fbc8cb47d4b1727f26d3bb78e974934f77c351c4a5fc9" + "bytes": 26336, + "sha256": "ba1dc88ddb6482400cfbb3c3baf8f7b1aec3153fec12e0cb3461583f99337515" }, { "path": "tests/Ludarium.ArchitectureTests/Ludarium.ArchitectureTests.csproj", - "bytes": 957, - "sha256": "f76cddd66e3b1fa879996df9e9e2542a97c35c87c3cd9e2495343945d5c0ede2" + "bytes": 930, + "sha256": "4cece9b911d3b12a05bb29c114c23d2a1214939cd3eb29b0487e0baf675a75c7" }, { "path": "tests/Ludarium.ArchitectureTests/packages.lock.json", - "bytes": 6817, - "sha256": "f2e583f071cf8539d6828c15b4b8a23d8e4aa137c85a623ebcd140eb2d68b170" + "bytes": 6639, + "sha256": "d367b7542aa9493279a78773a0eec68ddd1dbf85d5238158084a570d73bddd59" }, { "path": "tests/Ludarium.E2E/AdminTokenPolicyTests.cs", - "bytes": 2236, - "sha256": "008843323f944add99a914350e5ed01d15290a8d521b2e5bf1be02247fa8e9ef" + "bytes": 2182, + "sha256": "0ca77321871e8059ced6dccb3216787f300150d6816b0ec9dfcca271c16ffa3e" }, { "path": "tests/Ludarium.E2E/Ludarium.E2E.csproj", - "bytes": 676, - "sha256": "0a6abd36ee685cb012658cf3f57f368f0d15f793aab098916ef5d2cd7036ce15" + "bytes": 652, + "sha256": "c2a47ed64441b78819057fe62688348eefd54437428f494de04c4e064890ca7f" }, { "path": "tests/Ludarium.E2E/NativeRemotePlayerTests.cs", - "bytes": 16149, - "sha256": "5df7e911c02d3fd04b92aad83bd1ce60367ca70cf1b72861bce1a37c98ffc065" + "bytes": 15799, + "sha256": "922f46b8740ba7537c29ce2dd17bbf0b99bd5f8858ffbdaf5d57288117a0a08c" }, { "path": "tests/Ludarium.E2E/RateLimitPolicyTests.cs", - "bytes": 825, - "sha256": "e5ed26c8ac4131be90332297d0888d3c34d4d7e67de256834c86b81c1f86c589" + "bytes": 805, + "sha256": "9c4bbbabc0221a39746c07d0cf34887ad27085aea069f93aa1929996b53d5c36" }, { "path": "tests/Ludarium.E2E/ReleaseSurfaceTests.cs", - "bytes": 1579, - "sha256": "7da90b354153fd03fc0e33f46ce9806d3d752ba1bfa960d76ca50940fd2a87af" + "bytes": 1536, + "sha256": "4b0e27934c068e501adface03c0f7a8e8c03761e96d0f60a7d29c802b372311b" }, { "path": "tests/Ludarium.E2E/packages.lock.json", - "bytes": 6817, - "sha256": "f2e583f071cf8539d6828c15b4b8a23d8e4aa137c85a623ebcd140eb2d68b170" + "bytes": 6639, + "sha256": "d367b7542aa9493279a78773a0eec68ddd1dbf85d5238158084a570d73bddd59" }, { "path": "tests/Ludarium.IntegrationTests/ArtifactReconciliationTests.cs", - "bytes": 3680, - "sha256": "b09e13995585253d9b78e6a6e06ba8d05764328bb4febf5db5bcf9abedb3ef97" + "bytes": 3609, + "sha256": "653d8ea99808c0926598fa3cd69309561b76aebe4cf6430248bdec6e3e3cd545" }, { "path": "tests/Ludarium.IntegrationTests/ContractTests.cs", - "bytes": 190, - "sha256": "4c83dffee26fb6d61460b607c391796b831008bb5d4da8f602f9c55c4d36a37c" + "bytes": 183, + "sha256": "efd4a4f0588ed003ee80ca5ddde287934fda1ab7a1ed41c47c8f29f922f070ae" }, { "path": "tests/Ludarium.IntegrationTests/DiscSetArchiveTests.cs", - "bytes": 13598, - "sha256": "38bc0ceb0a2c183b467283bf6c534a85dc2adea97428903ad798ed9911d4c210" + "bytes": 13289, + "sha256": "4dcac3d5bad1dd12eec7bbcf2af03abd26e7cc66bcc27a351dfa42a8268aeb3d" }, { "path": "tests/Ludarium.IntegrationTests/DiscoveredGameTitleTests.cs", - "bytes": 3721, - "sha256": "b5bd4c0bc2d6ac9d9b07bfdc8b1dd169307a063b705148d9abb76a17e6ef4216" + "bytes": 3649, + "sha256": "a0dd1053a16a4e1858a3143b18253ff5c14ed84f0f47b1eb8d22556390643bf6" }, { "path": "tests/Ludarium.IntegrationTests/FirmwareVaultFileStoreTests.cs", - "bytes": 1869, - "sha256": "86552454afcc4607a79ad2d5d046d1f7755c399d796b8ac17794c42eaff9a3cb" + "bytes": 1822, + "sha256": "fa3a1159c3741e52ac9312f5b1fe8727657e3ca4384bd021df8f92cebfd60cb4" }, { "path": "tests/Ludarium.IntegrationTests/GameArtworkEnricherTests.cs", - "bytes": 2054, - "sha256": "de6d955eae554034fe0f8120b6d45c5cbb45e7010636eb15787a51e7f9c4260e" + "bytes": 2009, + "sha256": "bac6c8282d5abec082a8708e4c46362d2ed8a4c8e2f59d928d6e7ea11f740272" }, { "path": "tests/Ludarium.IntegrationTests/GameArtworkStoreTests.cs", - "bytes": 2244, - "sha256": "37c22e5f8475990a38c0fd30e85127a2051c64ec0ccb632042a3a22a4d1daeb3" + "bytes": 2200, + "sha256": "d79df14c63dcd78d3ce6b59cd9615da13ab21f415734333e6a7dd782f59ebebf" }, { "path": "tests/Ludarium.IntegrationTests/GameCheatCatalogTests.cs", - "bytes": 3880, - "sha256": "70543a62a38adb8508e5a63140a14da6055ae748b29598b4ac9c3db8b7c6a45e" + "bytes": 3784, + "sha256": "6138b8df7b2abc502a5764e9b2785c50282c20af16ac4091249825455a23282f" }, { "path": "tests/Ludarium.IntegrationTests/GameDataVaultFileStoreTests.cs", - "bytes": 7657, - "sha256": "93e9676f021432b710cb263dee49e4543e338701724892c403d27d5d5b178c6a" + "bytes": 7501, + "sha256": "a81b74c90a98c7730f9e65595fbb2072d3746dc54e559562d460ab82c006ef6a" }, { "path": "tests/Ludarium.IntegrationTests/GameLibraryQueryTests.cs", - "bytes": 7948, - "sha256": "9a6781bf1a552f3e6214957bd4456bcf749c161883ff38629f6f7089dc2af8f1" + "bytes": 7827, + "sha256": "95470fe781dfda7e89b16bd610a94115fb39c3dc245902f0695e8ec4cd386dde" }, { "path": "tests/Ludarium.IntegrationTests/GameMediaStoreTests.cs", - "bytes": 2204, - "sha256": "c614d58c1e590c5be9b54839ec50efc4fa4a6c2831e5607f31ca43a15982c61f" + "bytes": 2154, + "sha256": "5d5acccddc0c0fb9fc7ecd0a6e46b1ee293636067f15323f94c8f95231a1559e" }, { "path": "tests/Ludarium.IntegrationTests/Ludarium.IntegrationTests.csproj", - "bytes": 1110, - "sha256": "f94268eb5c008fb1e782523503fb125654e7c3e332bfba8b2b50545ec52d416d" + "bytes": 1079, + "sha256": "f33b2aebca16e8f8340da2359f4f3c151be452866457268de56900759c147645" }, { "path": "tests/Ludarium.IntegrationTests/N64ZipRomTests.cs", - "bytes": 2099, - "sha256": "54759077f281a2ac148eaffd8d9d428d613d0316efcc7d61976f043229a436a9" + "bytes": 2046, + "sha256": "15f84381751aa57822dcbee4a30fb458297311e2212c0889d388ba3617d96637" }, { "path": "tests/Ludarium.IntegrationTests/NativeBrowserPlayServiceTests.cs", - "bytes": 12060, - "sha256": "34e9a8df9875460252bc961aad36e242a61a22df80b6b674fe30aa829316e5cf" + "bytes": 11847, + "sha256": "d4c50eec71c4247427836436bac6e2b9c6e83ee71c745badecb95af2e78d280c" }, { "path": "tests/Ludarium.IntegrationTests/NativeProviderFixtureTests.cs", - "bytes": 2726, - "sha256": "bb9b9eb1c19a20df96dca0d1adbc07485c53bdd972b42a8f33a714c7677f8217" + "bytes": 2670, + "sha256": "5b8e8f2bd5c97851f2eba22a80dff7387e209af3b9b9ac890f0199376b20a12c" }, { "path": "tests/Ludarium.IntegrationTests/PostgresStoreTests.cs", - "bytes": 50417, - "sha256": "760333eb47891178b737c3e393e3dccaea4e63dacec97caf174f24d9225156a6" + "bytes": 49798, + "sha256": "18bb106b5bcd29a30af3f952f8634cb6bc13fee8686b2648435795ba7bec904b" }, { "path": "tests/Ludarium.IntegrationTests/RawgGameDiscoveryServiceTests.cs", - "bytes": 1934, - "sha256": "4993d88707f43a1c642589859428148c940d728c411cb82c4b66fd17bc3d9fbf" + "bytes": 1894, + "sha256": "9b06a9988148afb54f44b89772f53213d316d4ab6a03345209591c52d28d9c6a" }, { "path": "tests/Ludarium.IntegrationTests/ReadOnlyLibraryFileSystemTests.cs", - "bytes": 2948, - "sha256": "52a584dc1dc51f1444d85c6bf30969159aca69d1b6524ec8c89f714040563f03" + "bytes": 2875, + "sha256": "a84746a79e5cfb1aff1d1990eb3c5020f1464316ce88dfcfeb8ecac389ea2844" }, { "path": "tests/Ludarium.IntegrationTests/RetailCoverProfileCoverageTests.cs", - "bytes": 759, - "sha256": "4c693736cbf3d6560ee096191adee6acf6c8755c9db5b21431e2d05f4d97c960" + "bytes": 736, + "sha256": "be77a7ff55dd7b038982df7b568e03da0a202893ad77e8ee7da3aa6553de3b2f" }, { "path": "tests/Ludarium.IntegrationTests/ReviewResolutionTests.cs", - "bytes": 2901, - "sha256": "c6edca81602b041d614c950f3f41717b2f718f21062b272d227a24a2b927ea20" + "bytes": 2843, + "sha256": "16e969b507069c113cfd5a25dee0353d6d9e4d48336bf74ebbe21a051e069c5b" }, { "path": "tests/Ludarium.IntegrationTests/SafeScanTests.cs", - "bytes": 30873, - "sha256": "b180e573780f4304f521ab470b74b46be764a1c0c780fd6741102145734ed63a" + "bytes": 30534, + "sha256": "0fbacd5dd58be8698bc1a66b0e84ec2cf21f9e7a798391c22d7df30159ba84c1" }, { "path": "tests/Ludarium.IntegrationTests/SupportBundleServiceTests.cs", - "bytes": 2884, - "sha256": "de97fcc8ce5080c5677f7ae07076ebbe5a3ef038c514f374a3938e05179363fa" + "bytes": 2827, + "sha256": "c37d4922857ae9ac0af4c351e5ac45a16bd205572085ae965b87d4beffcd6db0" }, { "path": "tests/Ludarium.IntegrationTests/SwitchRuntimeProvisionerTests.cs", - "bytes": 2325, - "sha256": "19a87fe3cb54d76807eb3e547290e9da9a0c714fc8ed90b540ba636db1d27ab2" + "bytes": 2271, + "sha256": "4fc8ec4276bf3ac856d572d882cde7d89ca0b6412b57a6089826cd3d59ad97b8" }, { "path": "tests/Ludarium.IntegrationTests/packages.lock.json", - "bytes": 11084, - "sha256": "772ca7adfec9549fd4f8fcfa6919d0463663cf71989a445105484bd85d8fc44f" + "bytes": 10804, + "sha256": "9a9c9b1030969a47f673eb32ef00f7ec98f6d4c4a382a9f4e4c1b706dc9a7225" }, { "path": "tests/Ludarium.UnitTests/AnalysisTests.cs", - "bytes": 21685, - "sha256": "1ffa0a8faea93a082d4ce79f17d18c33bb5cc1fa72b4494fb4e612495464559a" + "bytes": 21241, + "sha256": "a74d8251482ca9462972999956876effecee1c01b30c686c1eb057a252ae1358" }, { "path": "tests/Ludarium.UnitTests/ArchiveAnalysisTests.cs", - "bytes": 3695, - "sha256": "c5a501c214db86a054b9accb6cbf2b764acf0bab6b1722bdae69622cc90ef5de" + "bytes": 3599, + "sha256": "482bfe9dbbb908924c8d8123565d00d8063578185a311896567b2de493ce7393" }, { "path": "tests/Ludarium.UnitTests/ArtworkQualityTests.cs", - "bytes": 5804, - "sha256": "c05c084ad6da91c404b916613e30b8f1bd072e03bd4410b73a0e1ea17cc581bd" + "bytes": 5683, + "sha256": "312c266ca10bece06ccf5f7120fe35a0fa938c4be115f83ee6376d24c6e4a776" }, { "path": "tests/Ludarium.UnitTests/BrowserGameDataPolicyTests.cs", - "bytes": 3574, - "sha256": "68177db929da76b65d4fadf644b0991f5fb0bb932a881535219f914f5b6eb1d7" + "bytes": 3513, + "sha256": "5780043d6fa717e90b52d29a0c738acb95dc0a7baca362bca5930f059b121107" }, { "path": "tests/Ludarium.UnitTests/BrowserPlayPolicyTests.cs", - "bytes": 13994, - "sha256": "b848838afa4f3fbe8f40db8bcc7eaa53b93b6aae55a4aee6d3531108e3cfab18" + "bytes": 13720, + "sha256": "d35bbb4b852499dfd5fe83827498f590c3f38624f2f2d4373c96d7f4a557489a" }, { "path": "tests/Ludarium.UnitTests/CatalogImportTests.cs", - "bytes": 2862, - "sha256": "c7f4d8015cc9ed807013d2673fed4c115c112f60549f80fde5622f1010f0b57c" + "bytes": 2813, + "sha256": "b346761e0e5d165d7e1133464083d1414a3677a0b37a35f48a076caed2cc59ed" }, { "path": "tests/Ludarium.UnitTests/CatalogVisibilityTests.cs", - "bytes": 610, - "sha256": "2de590cfd4e65e4863ec97aa326f3145050861852761f439db69694c6a2b62db" + "bytes": 591, + "sha256": "8dc5ba5b42b4f39a622291873b3ad1b945565056c4003e79374ca35d1e09ead6" }, { "path": "tests/Ludarium.UnitTests/ClaimPolicyTests.cs", - "bytes": 1254, - "sha256": "a1fdc38683794e4a6ad1f8d2c381bfd7f9eac53590a7626f683a6e9d4a66ceee" + "bytes": 1232, + "sha256": "6143dbe16f20ff06d0e9834a6b6051f95323538d8a91a8bc2bf6901a0c9906c7" }, { "path": "tests/Ludarium.UnitTests/DashboardSummaryTests.cs", - "bytes": 783, - "sha256": "fba5027b898f49bcb35b6d7337579efdaf1b4b60ee672a0b072f26a3271d646c" + "bytes": 759, + "sha256": "5fa7ff4b2b9b4c34e4dde63afeb64233e2317137011a174d01a191981f957c51" }, { "path": "tests/Ludarium.UnitTests/DolphinLaunchPolicyTests.cs", - "bytes": 2389, - "sha256": "000badc2002707a83e41b098247116d6f1cee5cc773dc4892a240c33b8bda1cd" + "bytes": 2336, + "sha256": "e4b76ec93d5ab65255bad354c959fa254521472a69f6e267d12f0f0d7bcb9d49" }, { "path": "tests/Ludarium.UnitTests/FirmwarePolicyTests.cs", - "bytes": 1626, - "sha256": "17d23b0d257a875c6972bc08640494b0bd033c4799d5f88e5819330e5a88e455" + "bytes": 1593, + "sha256": "0ea1a3c95b859909b568f803e410354f52e607312fde2ba7087f73e4a73923e8" }, { "path": "tests/Ludarium.UnitTests/GameDataVaultPolicyTests.cs", - "bytes": 1249, - "sha256": "40eea37b8a02fc0f5b623631e35ab1f548ba0fe5e70d7a73f46ef01dc0bd4345" + "bytes": 1215, + "sha256": "0aabd307e0d0f25e875d52bf8460c41d28d0849da495a97aae28e8ea503a88be" }, { "path": "tests/Ludarium.UnitTests/GameQueryTests.cs", - "bytes": 3560, - "sha256": "c4f253581074f268e6e33f8269667c24ad5188a48de3f98f6197c63170b37bc1" + "bytes": 3472, + "sha256": "28620034e07b6210a7382e1d3a5631a3989cd18766a4ba0172448520de742a8e" }, { "path": "tests/Ludarium.UnitTests/HealthRuleTests.cs", - "bytes": 973, - "sha256": "abbdf0a7eb1223f07e29e978df0e7a2bbb87f3178a33f2b9f244113f64e9221f" + "bytes": 955, + "sha256": "df0f98eb74758dae907fe17d18794be4a09f83c11ec84273d833b5dc9a4fa56c" }, { "path": "tests/Ludarium.UnitTests/LibraryExperiencePolicyTests.cs", - "bytes": 1157, - "sha256": "d51a6f1c0aa11436845a06fdade181a4eef121807503ab24efd4ed563a4505f9" + "bytes": 1130, + "sha256": "8fe50645cbf8d7c96afd8685b8902f024d5a0da9dc7c7e901125e1267a44532c" }, { "path": "tests/Ludarium.UnitTests/Ludarium.UnitTests.csproj", - "bytes": 1148, - "sha256": "35043b8ed8006096709379f2fdd57f1a90d477bfdad4e4d7a8fd29e9e19cd89e" + "bytes": 1118, + "sha256": "177f050faac1f00e1b06363b66b40b1ac19a83e57b0607e140ab998145bc6d98" }, { "path": "tests/Ludarium.UnitTests/MsiDatabaseAnalysisTests.cs", - "bytes": 8866, - "sha256": "c40c02b21d52fc9b90c2a9abf5ee59fd36c0853d90d7616a401d795f0ddbc7b2" + "bytes": 8690, + "sha256": "6c856d7de26e69f51a45adf9856b94cf7d89dcc7649cc53bc2a10294ae28d9e8" }, { "path": "tests/Ludarium.UnitTests/PlatformIdentificationTests.cs", - "bytes": 9504, - "sha256": "848b3df1b56621a6a46ccb1c3a00bcea971ee97966d5d15259eb79b2a098859b" + "bytes": 9299, + "sha256": "b70dfc0cb70939e23603c172ee2d146f895e4ce8b989afa39d91589fe539393a" }, { "path": "tests/Ludarium.UnitTests/ScaleTests.cs", - "bytes": 1507, - "sha256": "621148487338c6ff1b0091492f8c3f9e26fc171358eed461ea05688de678dc0e" + "bytes": 1470, + "sha256": "909ae8aaf5e355c709da6534e602880b3952eb6905ea23a03906a74bf5453f4a" }, { "path": "tests/Ludarium.UnitTests/SnapshotComparerTests.cs", - "bytes": 1806, - "sha256": "a6ef640aa47da7d85885ff075dcd83686e3690777077f53b370f336c3833ed1c" + "bytes": 1772, + "sha256": "0c9caa0bc9feab7e279c0efb8227049d461d91316149d096e274da41dd9d86f2" }, { "path": "tests/Ludarium.UnitTests/SnapshotSerializationTests.cs", - "bytes": 719, - "sha256": "cb04bd0ced8a9152f144b891dd39d49f96f3618ba4932bd90e6d4c1700ecff88" + "bytes": 699, + "sha256": "a5fe467cf0f8ae625f68a3fc00911ff67dc0f88dd4bcb41d1609583cceb6edfb" }, { "path": "tests/Ludarium.UnitTests/SwitchLaunchPolicyTests.cs", - "bytes": 3556, - "sha256": "5d056d2c0c7c326fe1ab8766e91d6d07663399ce7cb0898584c9858b0846c2bc" + "bytes": 3479, + "sha256": "d67ea1d5a8a1f6796de0f98822506ff0aafad18ebe89f930648b3839d7782999" }, { "path": "tests/Ludarium.UnitTests/packages.lock.json", - "bytes": 4483, - "sha256": "e0e64a1ad98de0a80fec234a8d19fc84ef52dd6c4fa877752ae3fac96e0f55d3" + "bytes": 4365, + "sha256": "bae64d503ce027159a2c8ba989df87ab988508ab55cc9803945b9103620cbe64" }, { "path": "tests/controllers/test_ludarium_sidecar.py", diff --git a/README.md b/README.md index 71ee4fc..0294d96 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Ludarium +

Your game archive, searchable and accountable.

+

Interface · Features · Quick start · Architecture

+ **A local-first, self-hosted catalog for game archives.** Ludarium turns read-only folders of ROMs, disc images and archived Windows installers into a searchable library with provenance, integrity evidence and an explicit review queue. It is built for Unraid, but the supplied Compose deployment @@ -7,6 +10,14 @@ also works on a regular Docker host. ![Ludarium home screen with an empty, privacy-safe example archive](docs/screenshots/living-archive-audit/audit-home-desktop.png) +## Explore the interface + +These captures show a deliberately empty, privacy-safe example archive. Your own files and metadata appear only after you add read-only library mounts and scan them. + +| Searchable library | Review queue | +| --- | --- | +| ![Ludarium library without imported private files](docs/screenshots/living-archive-audit/audit-library-desktop.png) | ![Ludarium review queue](docs/screenshots/living-archive-audit/audit-attention-desktop.png) | + ## What you can do - discover and fingerprint files without renaming, moving or executing them; @@ -65,6 +76,19 @@ for the content you index and for complying with the rules that apply to it. no credentials are configured. - Report vulnerabilities privately using [`SECURITY.md`](SECURITY.md). +## Architecture + +```mermaid +flowchart LR + Libraries[Read-only archive mounts] --> Scanner[Inventory and fingerprints] + Scanner --> Review[Explicit review queue] + Review --> Catalog[(PostgreSQL catalog)] + Catalog --> Web[React library and collections] + Catalog --> Exports[Portable catalog exports] +``` + +The cataloging pipeline only reads mounted source libraries. PostgreSQL stores identities, provenance, collections and review state; cache, exports and optional player data use separate writable locations. This separation lets you re-scan or restore the catalog without changing original game files. + ## Development The backend targets .NET 10, the UI uses React 19 and Vite, and controller helpers use Python's standard diff --git a/deploy/audit-eden-runtime.sh b/deploy/audit-eden-runtime.sh old mode 100644 new mode 100755 diff --git a/deploy/prepare-switch-appdata.sh b/deploy/prepare-switch-appdata.sh old mode 100644 new mode 100755 diff --git a/deploy/run-candidate-gate.sh b/deploy/run-candidate-gate.sh old mode 100644 new mode 100755 diff --git a/deploy/run-eden-security-gate.sh b/deploy/run-eden-security-gate.sh old mode 100644 new mode 100755 diff --git a/deploy/run-managed-validation.sh b/deploy/run-managed-validation.sh old mode 100644 new mode 100755 diff --git a/deploy/verify-release-identity.sh b/deploy/verify-release-identity.sh old mode 100644 new mode 100755 diff --git a/docs/screenshots/living-archive-audit/audit-attention-desktop.png b/docs/screenshots/living-archive-audit/audit-attention-desktop.png new file mode 100644 index 0000000..876132b Binary files /dev/null and b/docs/screenshots/living-archive-audit/audit-attention-desktop.png differ diff --git a/docs/screenshots/living-archive-audit/audit-library-desktop.png b/docs/screenshots/living-archive-audit/audit-library-desktop.png new file mode 100644 index 0000000..3fc79d2 Binary files /dev/null and b/docs/screenshots/living-archive-audit/audit-library-desktop.png differ diff --git a/public-source.allowlist b/public-source.allowlist index 288524b..97bef92 100644 --- a/public-source.allowlist +++ b/public-source.allowlist @@ -43,6 +43,8 @@ deploy/verify-release-identity.sh deploy/verify-source-manifest.sh docs/PUBLIC_SOURCE_BOUNDARY.md docs/screenshots/living-archive-audit/audit-home-desktop.png +docs/screenshots/living-archive-audit/audit-library-desktop.png +docs/screenshots/living-archive-audit/audit-attention-desktop.png fixtures/** global.json public-source.allowlist