Skip to content

Add game-scout extension#27267

Open
Glct26 wants to merge 16 commits into
raycast:mainfrom
Glct26:ext/game-scout
Open

Add game-scout extension#27267
Glct26 wants to merge 16 commits into
raycast:mainfrom
Glct26:ext/game-scout

Conversation

@Glct26
Copy link
Copy Markdown

@Glct26 Glct26 commented Apr 18, 2026

Description

Game Scout is a comprehensive extension for gamers to search across multiple storefronts, track historical lows, discover free giveaways, and catch the best daily deals without leaving the launcher.

Key Features

  • Search Games: Quickly look up any game, see its current price, all-time low, and active bundles (via IsThereAnyDeal API).
  • Smart Recommendation Engine: Get instant verdicts (👍 STRONG OPPORTUNITY, 🟢 GOOD OPPORTUNITY, 🟡 AVERAGE TIMING, 🟠 WEAK OPPORTUNITY, ❌ POOR OPPORTUNITY) plus overrides (🎁 FREE TO CLAIM, 📦 CHEAPER IN BUNDLE) based on historical lows and bundle value analysis.
  • Price History Charts: Visual price trend graphs (3-month, 6-month, 1-year ranges) generated directly in the detail view (via QuickChart.io). (Note: Can be toggled off in preferences to save API limits).
  • Bundle Content Viewer: Inspect active bundle tiers, prices, and included games without leaving the extension (via IsThereAnyDeal API).
  • Manage Stores: Globally filter Search, Saved Games, and Top Deals to only show prices from your preferred storefronts.
  • Saved Games: Add games to your personal watchlist. Features advanced filtering (Only Deals, Biggest Discount, Best Opportunities) and a dynamic 🔥 Price Drops section. (via IsThereAnyDeal API).
  • Top Deals: Discover the highest-rated game deals across 30+ official stores, powered by the CheapShark Deal Rating algorithm (via CheapShark API - No API key required).
  • Free Games: Never miss a 100% free game or DLC giveaway across PC, PlayStation, Xbox, VR and Mobile platforms (via GamerPower API - No API key required).

Screencast

1 2 3 4 5 6 7

Checklist

@raycastbot raycastbot added the new extension Label for PRs with new extensions label Apr 18, 2026
@raycastbot
Copy link
Copy Markdown
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@Glct26 Glct26 marked this pull request as ready for review April 18, 2026 15:56
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 18, 2026

Greptile Summary

This PR adds the new Game Scout extension — a multi-command Raycast companion for tracking game prices, deals, and giveaways across Steam, GOG, Epic, and 30+ storefronts via the ITAD, CheapShark, and GamerPower APIs.

  • Five commands: Search Games, Saved Games, Top Deals, Free Games, and Manage Stores, each with their own caching strategy, store-filtering layer, and preference-driven behavior.
  • A shared utils.ts module provides price formatting, store-allow-listing, and a percentile-based recommendation engine (computeGameInsight).
  • Several issues flagged in earlier review rounds have been addressed (e.g. maxPrice fallback, bundle count reading from overview API).

Confidence Score: 5/5

The extension is functionally sound; all changes are additive and self-contained within the new extension directory.

All new findings are style/polish nits — a missing $schema, an unused exported function, and a cache key that doesn't track the chart-preference state. None affect correctness or data integrity in ways not already covered by the manual "Refresh Data" action.

No files require special attention; the detail-cache key inconsistency in search-games.tsx and saved-games.tsx is worth a look but not blocking.

Important Files Changed

Filename Overview
extensions/game-scout/package.json Extension manifest is well-structured; missing $schema reference and previously noted issues with the separator dropdown item and duplicate FR country code.
extensions/game-scout/src/utils.ts Shared utilities for price formatting, store filtering, and insight computation; buildBundleMap is exported but no longer imported by any consumer.
extensions/game-scout/src/search-games.tsx Main search command; bundle counts now read correctly from overview API; detail cache key doesn't encode the chart preference, so toggling it has no visible effect until cache expires.
extensions/game-scout/src/saved-games.tsx Watchlist command with price-drop detection and bundle tracking; CACHE_TTL now reads from refreshFrequency preference; detail cache has same SHOW_CHART key issue as search-games.
extensions/game-scout/src/top-deals.tsx CheapShark-powered deal browser; maxPrice fallback now defaults to "9999" instead of "50", store filter applied after cache correctly.
extensions/game-scout/src/free-games.tsx GamerPower giveaway browser; uses getPreferenceValues() without manual type annotation (correct pattern); platform parsing and ignore-list logic look solid.
extensions/game-scout/src/manage-stores.tsx Store selection UI; selectNone intentionally avoids persisting an empty list to prevent all-store-disabled state from leaking to other commands.
Prompt To Fix All With AI
Fix the following 3 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 3
extensions/game-scout/package.json:1-5
**Missing `$schema` field**

The root `package.json` object does not include the required `$schema` reference. Without it, editors cannot validate or autocomplete Raycast-specific fields such as command modes, preference types, and platform targets. Add `"$schema": "https://www.raycast.com/schemas/extension.json"` as the first field.

### Issue 2 of 3
extensions/game-scout/src/utils.ts:905-933
**`buildBundleMap` exported but never used**

`buildBundleMap` is declared and exported, but neither `search-games.tsx` nor `saved-games.tsx` imports it — both files now compute bundle counts inline from the overview response. The function is dead code and can be removed to avoid confusion about which path is authoritative for counting bundles.

### Issue 3 of 3
extensions/game-scout/src/search-games.tsx:2719-2720
**Detail cache key ignores `SHOW_CHART` state**

The cache key `search_detail_${gameId}_${COUNTRY}_v1` does not encode whether the price-history call was included. If the detail was cached with `showPriceHistoryChart = false` (no `historyChart` data), then the user enables the preference and opens the same game within the 6-hour TTL, the cached payload is returned with `historyChart: []` and the chart never appears — the preference change appears to have no effect until the cache expires or the user hits "Refresh Data". The same applies to the identical cache key in `saved-games.tsx`. Appending the chart preference to the key (e.g. `_c${SHOW_CHART ? 1 : 0}`) or invalidating the cache on preference toggle would fix this.

Reviews (8): Last reviewed commit: "Fix: Resolve hook violations, bundle ico..." | Re-trigger Greptile

Comment thread extensions/game-scout/src/saved-games.tsx Outdated
Comment thread extensions/game-scout/src/search-games.tsx Outdated
Comment thread extensions/game-scout/package.json Outdated
Comment thread extensions/game-scout/src/search-games.tsx Outdated
@Glct26
Copy link
Copy Markdown
Author

Glct26 commented Apr 18, 2026

All mentioned issues have been resolved and pushed.

@Glct26
Copy link
Copy Markdown
Author

Glct26 commented Apr 25, 2026

Hi, could a maintainer please approve the workflows so the CI checks can run? Thank you!

@Glct26
Copy link
Copy Markdown
Author

Glct26 commented Apr 27, 2026

All Greptile issues from first review resolved:

  • refreshFrequency preference now controls CACHE_TTL
  • Removed manual Preferences interfaces
  • Fixed duplicate FR country code
  • English comments only
  • CHANGELOG.md added

Phase 1.5 additions:

  • Smart Recommendation Engine (BUY/GOOD DEAL/WAIT/SKIP) with bundle priority
  • Bundle Value Calculator (tier pricing, per-game cost)
  • Price History Charts (3m/6m/1y, toggleable)
  • Manage Stores command
  • BundleContentViewer with Open/Copy actions
  • OST/Soundtrack detection
  • Platform-specific shortcuts (Windows/macOS)
  • Screenshot metadata

@Glct26
Copy link
Copy Markdown
Author

Glct26 commented Apr 27, 2026

Updated screenshots to strictly follow store guidelines.

- Fix CACHE_TTL to use refreshFrequency preference

- Remove unused imports and variables (lint fixes)

- Fix Price Drops: deduplication, regular price format, separator
Glct26 added 7 commits April 27, 2026 22:51
…afe, verdict fixes, truncation with ellipsis
- Improve bundle status logic

- Fix price history chart preference not applying

- Replace mature content icon with tag

- Fix TypeScript preference types

- Add null checks for prices and priceData
Comment thread extensions/game-scout/src/saved-games.tsx Outdated
@Glct26 Glct26 marked this pull request as draft April 30, 2026 01:06
@Glct26 Glct26 marked this pull request as ready for review May 11, 2026 20:34
Comment thread extensions/game-scout/src/saved-games.tsx
Comment thread extensions/game-scout/package.json Outdated
Comment thread extensions/game-scout/src/search-games.tsx
Comment thread extensions/game-scout/src/search-games.tsx Outdated
Comment thread extensions/game-scout/src/top-deals.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants