Conversation
- Replace cramped GPU/Architecture/Config dropdown row with single Filters button - Filters button shows active filter count (e.g. Filters (2)) and sliders icon - ReportFiltersModal gives each filter its own labeled row with full-width dropdown - Remove GPU architecture pill from report card rows; show arch in detail modal under GPU Tier row instead - Report Analysis modal: fix double background and width pushing right - Report Analysis score pill now shows pts label and Excellent/Good/Fair/Low tier - Score tiers driven from scoring-info.json (shared source of truth with web app) - Add What's this? button next to score pill that opens ScoringGuideModal - ScoringGuideModal now includes Report Score Tiers section from scoring-info.json
…hrottled to once per 24h
… and refresh button
…eportAnalysisModal
…g EXCELLENT label row
…tatus, and analysis modal
- Add hourly bucket tracking (last 24h) to metrics: hit rate, fetch latency, and fetch volume recorded per hour with automatic eviction - New CacheStatsModal with CSS bar charts for hit rate, CDN avg latency, and request volume per hour - Stats button in Manage Cache header opens the stats modal via showModal - CDN 404 no-data spans excluded from latency averages so they dont skew the timing charts
…mpatToolsSection, archFilter, resetFilters to 19 locales
…atToolsSection, archFilter, resetFilters across all 19 locales
…h fallbacks Adds scripts/sync-missing-translations.mjs which finds keys present in i18n.ts but absent from language files and inserts English fallbacks. Wired into the build so missing keys are impossible going forward. Backfills gpuArch and perReportWhatsThis into the 19 translation files that were missing them.
…n errors - Cache Steam appdetails responses for 7 days to avoid 429 rate limiting - Serve stale cache on network errors instead of returning empty - Removed --retry-all-errors from curl_json (was multiplying 429 requests) - Added from_cache and error fields to result dict - Tests cover disk cache hit, save, stale fallback, and error paths
…announcements Native GitHub-Discord webhook fires on all release sub-events (deleted, created, prereleased, published) producing 3 blank embeds per dev release. New workflow triggers only on published to post a single formatted embed.
…n announcement channels
- Python: detect GOG product ID and Epic game ID from Heroic shortcut launch options (heroic://launch/gog/<id>) with library JSON fallback - gameSource.ts: add gog_product_id, epic_game_id fields to GameSourceInfo; add appTypeFromSource() and nativeAppIdFromSource() helpers - userConfigs.ts: add appType field (steam/gog/epic/nonsteam), VALID_APP_TYPES, validation, and app_type in POST body - NativePulseReportModal: accept gameSource prop, derive prefixed app_id (gog:<id> / epic:<id>) and appType from it; allow Heroic GOG/Epic submissions - ConfigEditorModal: resolve game source before opening modal for shortcuts; pass gameSource through; block only unidentified shortcuts - Migration: 20260623000000_add_app_type_to_user_configs.sql applied
…cked locally restoreCloudConfigs skipped any cloud row whose app_id was not already tracked on this device, which meant a fresh device or a reinstall restored nothing and only games you already had locally came back. Pull every fetched cloud config down via the addTrackedConfig upsert instead. fetchCloudConfigs already dedupes by app_id (newest wins), so there is no skip case left. Failed inserts now log the appId, appName, and reason.
…ext column (refs #95) user_proton_configs.app_id is moving from bigint to text on the web side, so the API will return app_id as a string. getCloudSyncStatus and the ManageTab cloud-row lookups compared it to a numeric appId with ===, which would break sync badges and the publish/restore actions once the column flips. Normalize both sides with String() and key the fetch dedup map on the string form. No behavior change while the column is still bigint.
Promote accumulated dev work to a stable release: Manage This Game QAM button, GOG/Epic non-Steam submissions, cloud restore pulls down all configs and fetches by linked account, game requirements disk cache, cache stats overlay redesign, type-agnostic cloud app_id handling, and assorted badge/scroll/compat/i18n fixes.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
PR #96 failed the 95% diff-coverage gate. Cover the changed-but-untested lines: gameSource.ts (new file, 0 -> 100%), userConfigs invalid appType branch, cloudSync no-linked-user fetch + pushPluginSettings error/throw paths, metrics badge counters and hourly-bucket load, and the game_requirements.py / game_source.py disk-cache and Heroic native-id resolution. TS 693 + Python 336 tests pass.
Two fixes in the Native Pulse report modal:
- resolveAppName() in steamApps.ts falls back through SteamClient,
appStore, and collectionStore before erroring on missing title, so a
freshly added game whose overview has not populated yet still resolves
a name.
- New Save draft button next to Submit persists every form answer to
localStorage under pp:report-draft:{appId}[:{configKey}]. Reopening the
modal restores where you left off; successful submit clears it.
Twelve keys were showing "same as English" placeholders in one or more translation files -- enough to keep the Danger translation-coverage check at 98.4-99.1% instead of the required 100%. Backfilled all of them with real per-locale translations. Now every language reports 100% PASS. Keys covered: autoUpdateStatus, compatToolsSection, lastChecked, nextCheckAt, archFilter, resetFilters, gpuArch, manageOnWeb, manageOnWebDesc, perReportWhatsThis, libraryBadgeShowNoData, libraryBadgeShowNoDataDescription. Ships a small scripts/backfill-translations.mjs so future placeholder gaps can be closed the same way -- consumes a key -> lang -> string map and rewrites each translation file in place, handling backtick, single- and double-quoted arrow-function bodies.
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.
Promotes the accumulated dev work to a stable release so the type-agnostic cloud app_id fix (#95) is in users' hands before the web app flips user_proton_configs.app_id to text.
Highlights:
After this merges and the stable release publishes, the web app applies the user_proton_configs.app_id text migration (proton-pulse-web #131).