gridscoot
◆ changelog · phase-stamped · public

What changed.

Every shipped change, newest first. Phase-stamped during the early-access window; SemVer kicks in on the @gridscoot/mcp npm package at public launch. Breaking changes get a 90-day overlap.

showing 19 of 19
Phase 12.252026-05-27
featuredocs

/docs · /status · /changelog · /roadmap · /rankings landed

Five new design-sourced pages went live: a quickstart-driven /docs surface, a real-data /status page hooked to /api/health/feeds, the changelog you are reading right now, /roadmap, and the /rankings transparency page.

Phase 12.24b2026-05-27
fix

extractPriceBounds — false-positive + symbolic-operator fixes

Three production bugs found by the code audit are fixed. "Nike Air Max 90" used to strip to "Nike Air" + max=$90; "over 5 watts" was extracted as min=$5; "phones < 1000" never matched at all because of a regex word-boundary bug.

  • Max/min keywords now require explicit $ or AUD suffix
  • Soft keywords (under/below/over/above) require $ OR amount ≥ 100
  • Symbolic operators (<, <=, >, >=) anchored with (?:^|\s) instead of \b
  • 15 new regression tests; 993 web tests passing
Phase 12.24a2026-05-27
fixdata

Catalogue dedup + locked regression guard

Two duplicate physical SKUs slipped into the 12.23 seed because the DB UNIQUE constraint is on (brand, mpn) but Logitech G + Logitech were treated as different brands. Removed; locked with a new scripts/seed-realistic-catalog.test.ts (5 cases including a canonicalised-brand check).

Phase 12.232026-05-27
featuredata

Catalogue expansion — 350 → 1,063 SKUs

Aggressive expansion of the illustrative seed catalogue across every consumer category an AU shopper might search: phones, laptops, TVs, cameras, gaming, kitchen, vacuums, power tools, shoes, skincare, mattresses, smart home, sleep, charging, garden, personal care.

  • 1,063 canonical products · 2,831 offers · 84,930 price-history rows
  • 54/54 L2 recall · 17/17 brand-explicit · 100% pass
Phase 12.222026-05-26
fix

Plurality-aware token overlap

Token-overlap matcher now treats "phone" ↔ "phones" as equivalent. AU staples added: esky, stubby holder, ultrawide monitor, Apple Pencil.

Phase 12.202026-05-26
fix

Over-fetch widening when price filters are active

"tv under 1500" was returning 0 results because the top candidates were premium OLEDs above the bound. Bumped CANDIDATE_OVERFETCH from 3× → 8× when a price filter is set (floor 30) so the filter has enough headroom.

Phase 12.192026-05-26
feature

Same-SKU vs different-SKU distinction on /search rows

"◆ STOCKED AT N RETAILERS · CHEAPEST FIRST" label above each offer stack so users see at a glance that the rows under one product are the SAME SKU across retailers, not different products.

Phase 12.182026-05-25
feature

Design refresh — coral → agent green

Primary accent token switched from coral #FF6B5B to agent green #7AFFB1 per the updated Claude Design source. Admin operator dashboard at /admin/feeds landed alongside.

Phase 12.14c2026-05-26
feature

Natural-language price-bound extraction

Search now parses "under $1000" / "over 500" / "less than $2000" out of the query and applies them as filters. Cleaned query goes to the matcher; bounds go to the SQL filter.

Phase 12.13b2026-05-26
docs

Early-access pricing-data advisory

Search responses now include a data_source_advisory field that explains the catalogue is illustrative, not live retailer feeds, until affiliate credentials land. Mirrored as an inline banner on /search.

Phase 12.62026-05-25
databreaking

Realistic AU product catalogue (replaces synthetic seed)

Sony WH-1000XM5, Dyson V15, Weber Q1200, Bosch GSR 12V, iPad Air M2 etc. — real brands/models so agent queries return recognisable results.

Phase 12.4b2026-05-24
fix

Three search bugs squashed

match_confidence was returning null for top-1 hits; embeddings were not firing for queries < 6 chars; demo mode was stripping prices on first-call responses.

Phase 12.52026-05-24
securitydocs

Legal hardening — ACL + indemnity + liability cap

Warranty disclaimer, no-reliance clause, AU Consumer Law acknowledgement, $50 liability cap, indemnity clause shipped on /terms.

Phase 12.22026-05-22
docs

MCP directory submissions + launch posts drafted

Anthropic MCP directory submission, awesome-mcp-servers PR, plus HN / r/ClaudeAI / r/OzBargain / r/LocalLLaMA / MCP Discord launch posts queued.

Phase 11.82026-05-21
feature

Multi-offer expansion · sparkline · price-alert slider

/search rows now expand to show all retailers stocking a SKU; mini-sparkline of 30-day price history under each row. /products/[id] has an interactive alert slider for "notify me below $X".

Phase 11.52026-05-20
fixbreaking

Six pre-launch blockers cleared

resolveApiKey honours SUPABASE_DB_SCHEMA; MCP stdio falls back to demo when no key set; @gridscoot/mcp published to npm; Bearer JWT fallback on /api/account/keys; REST discovery at /api/v1 + /.well-known/mcp.json; /api/health made public.

Phase 11.02026-05-19
feature

Full design refresh from Claude Design source

Landing, search, products, account, legal, and email templates all restyled from the Gridscoot.html design source. Tokens unified; glyph Lockup component extracted; shared SiteHeader / SiteFooter introduced.

Phase 9.52026-05-18
security

Pre-launch security audit — ASVS L2 + STRIDE

Mobile responsive sweep, Stripe paid-tier scaffold (test-mode only), CSP + HSTS + X-Frame + Permissions-Policy headers, email-enumeration leak at /api/waitlist fixed.

Phase 7.42026-05-17
feature

Resend client + pg_cron + price-alert wiring

Real email transport (still dry-run by default), Vercel Cron + pg_cron feeds, price-alert + waitlist emails wired end-to-end.