Skip to content

Bump the npm_and_yarn group across 1 directory with 22 updates - #1

Closed
dependabot[bot] wants to merge 109 commits into
mainfrom
dependabot/npm_and_yarn/npm_and_yarn-3565c2e6e4
Closed

Bump the npm_and_yarn group across 1 directory with 22 updates#1
dependabot[bot] wants to merge 109 commits into
mainfrom
dependabot/npm_and_yarn/npm_and_yarn-3565c2e6e4

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Apr 17, 2026

Copy link
Copy Markdown

Bumps the npm_and_yarn group with 21 updates in the / directory:

Package From To
next 15.3.3 15.5.15
@babel/runtime 7.26.9 7.29.2
@modelcontextprotocol/sdk 1.17.5 1.29.0
qs 6.13.0 6.14.2
@trpc/server 10.45.2 10.45.4
axios 1.11.0 1.15.0
brace-expansion 1.1.11 1.1.14
brace-expansion 2.0.1 2.1.0
fast-xml-parser 4.5.3 4.5.6
follow-redirects 1.15.11 1.16.0
glob 10.4.5 10.5.0
handlebars 4.7.8 4.7.9
js-yaml 4.1.0 4.1.1
jws 3.2.2 3.2.3
lodash 4.17.21 4.18.1
minimatch 3.1.2 3.1.5
minimatch 9.0.5 9.0.9
node-forge 1.3.1 1.4.0
path-to-regexp 0.1.12 0.1.13
picomatch 2.3.1 2.3.2
protobufjs 7.4.0 7.5.5
tmp 0.0.33 0.2.5
yaml 2.8.0 2.8.3

Updates next from 15.3.3 to 15.5.15

Release notes

Sourced from next's releases.

v15.5.15

Please refer the following changelogs for more information about this security release:

https://vercel.com/changelog/summary-of-cve-2026-23869

v15.5.14

[!NOTE] This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes

  • feat(next/image): add lru disk cache and images.maximumDiskCacheSize (#91660)
  • Fix(pages-router): restore Content-Length and ETag for /_next/data/ JSON responses (#90304)

Credits

Huge thanks to @​styfle and @​lllomh for helping!

v15.5.13

[!NOTE] This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes

  • fix: patch http-proxy to prevent request smuggling in rewrites (See: CVE-2026-29057)

Credits

Huge thanks to @​ztanner for helping!

Commits
  • 412eb90 v15.5.15
  • cb90de9 [15.x] Avoid consuming cyclic models multiple times (#74)
  • fffef9e Fix CI for glibc linux builds
  • d7b012d v15.5.14
  • 2b05251 [backport] feat(next/image): add lru disk cache and `images.maximumDiskCacheS...
  • f88cee9 Backport: Fix(pages-router): restore Content-Length and ETag for /_next/data/...
  • cfd5f53 v15.5.13
  • 15f2891 [backport]: fix: patch http-proxy to prevent request smuggling in rewrites (#...
  • d23f41c v15.5.12
  • 8e75765 fix unlock in publish-native
  • Additional commits viewable in compare view

Updates @babel/runtime from 7.26.9 to 7.29.2

Release notes

Sourced from @​babel/runtime's releases.

v7.29.2 (2026-03-16)

👓 Spec Compliance

  • babel-parser

🐛 Bug Fix

  • babel-helpers, babel-plugin-transform-async-generator-functions, babel-preset-env, babel-runtime-corejs3
  • babel-preset-env
    • #17789 [7.x backport] preset-env include/exclude should accept bugfix plugins (@​JLHwung)

🏠 Internal

Committers: 2

v7.29.1 (2026-02-04)

🐛 Bug Fix

Committers: 2

v7.29.0 (2026-01-31)

Thanks @​simbahax for your first PR!

🚀 New Feature

  • babel-types
  • babel-standalone

🐛 Bug Fix

  • babel-parser
  • babel-traverse
    • #17708 fix(traverse): provide a hub when traversing a File or Program and no parentPath is given (@​simbahax)
  • babel-plugin-transform-block-scoping, babel-traverse
    • #17737 [7.x backport] fix: Rename switch discriminant references when body creates shadowing variable (@​magic-akari)

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by [GitHub Actions](https://www.npmjs.com/~GitHub Actions), a new releaser for @​babel/runtime since your current version.


Updates @modelcontextprotocol/sdk from 1.17.5 to 1.29.0

Release notes

Sourced from @​modelcontextprotocol/sdk's releases.

v1.29.0

What's Changed

New Contributors

Full Changelog: modelcontextprotocol/typescript-sdk@v1.28.0...v1.29.0

v1.28.0

What's Changed

New Contributors

Full Changelog: modelcontextprotocol/typescript-sdk@v1.27.1...v1.28.0

v1.27.1

What's Changed

New Contributors

Full Changelog: modelcontextprotocol/typescript-sdk@v1.27.0...v1.27.1

v1.27.0

What's Changed

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by pcarleton, a new releaser for @​modelcontextprotocol/sdk since your current version.


Updates ajv from 6.12.6 to 8.17.1

Release notes

Sourced from ajv's releases.

v8.17.1

What's Changed

Full Changelog: ajv-validator/ajv@v8.17.0...v8.17.1

Plus everything in 8.17.0 which failed to release

The only functional change is to switch from uri-js (which is no longer supported), to fast-uri. This is the second attempt and the team on fast-uri have been really helpful addressing the issues we found last time.

Revert "Revert fast-uri change (ajv-validator/ajv#2444)" by @​gurgunday in ajv-validator/ajv#2448 fix: ignore new eslint error for @​typescript-eslint/no-extraneous-class by @​jasoniangreen in ajv-validator/ajv#2455 docs: clarify behaviour of addVocabulary by @​jasoniangreen in ajv-validator/ajv#2454 docs: refactor to improve legibility by @​blottn in ajv-validator/ajv#2432 Fix grammatical typo in managing-schemas.md by @​wetneb in ajv-validator/ajv#2305 docs: Fix broken strict-mode link by @​alexanderjsx in ajv-validator/ajv#2459 feat: add test for encoded refs and bump fast-uri by @​jasoniangreen in ajv-validator/ajv#2449 fix: changes for @​typescript-eslint/array-type rule by @​jasoniangreen in ajv-validator/ajv#2467 fixes ajv-validator/ajv#2217 - clarify custom keyword naming by @​jasoniangreen in ajv-validator/ajv#2457

v8.17.0

What's Changed

The only functional change is to switch from uri-js (which is no longer supported), to fast-uri. This is the second attempt and the team on fast-uri have been really helpful addressing the issues we found last time.

New Contributors

Full Changelog: ajv-validator/ajv@v8.16.0...v8.17.0

v8.16.0

What's Changed

Full Changelog: ajv-validator/ajv@v8.15.0...v8.16.0

... (truncated)

Commits
Install script changes

This version modifies prepublish script that runs during installation. Review the package contents before updating.


Updates qs from 6.13.0 to 6.14.2

Changelog

Sourced from qs's changelog.

6.14.2

  • [Fix] parse: mark overflow objects for indexed notation exceeding arrayLimit (#546)
  • [Fix] arrayLimit means max count, not max index, in combine/merge/parseArrayValue
  • [Fix] parse: throw on arrayLimit exceeded with indexed notation when throwOnLimitExceeded is true (#529)
  • [Fix] parse: enforce arrayLimit on comma-parsed values
  • [Fix] parse: fix error message to reflect arrayLimit as max index; remove extraneous comments (#545)
  • [Robustness] avoid .push, use void
  • [readme] document that addQueryPrefix does not add ? to empty output (#418)
  • [readme] clarify parseArrays and arrayLimit documentation (#543)
  • [readme] replace runkit CI badge with shields.io check-runs badge
  • [meta] fix changelog typo (arrayLengtharrayLimit)
  • [actions] fix rebase workflow permissions

6.14.1

  • [Fix] ensure arrayLimit applies to [] notation as well
  • [Fix] parse: when a custom decoder returns null for a key, ignore that key
  • [Refactor] parse: extract key segment splitting helper
  • [meta] add threat model
  • [actions] add workflow permissions
  • [Tests] stringify: increase coverage
  • [Dev Deps] update eslint, @ljharb/eslint-config, npmignore, es-value-fixtures, for-each, object-inspect

6.14.0

  • [New] parse: add throwOnParameterLimitExceeded option (#517)
  • [Refactor] parse: use utils.combine more
  • [patch] parse: add explicit throwOnLimitExceeded default
  • [actions] use shared action; re-add finishers
  • [meta] Fix changelog formatting bug
  • [Deps] update side-channel
  • [Dev Deps] update es-value-fixtures, has-bigints, has-proto, has-symbols
  • [Tests] increase coverage

6.13.3

[Fix] fix regressions from robustness refactor [actions] update reusable workflows

6.13.2

  • [Robustness] avoid .push, use void
  • [readme] clarify parseArrays and arrayLimit documentation (#543)
  • [readme] document that addQueryPrefix does not add ? to empty output (#418)
  • [readme] replace runkit CI badge with shields.io check-runs badge
  • [actions] fix rebase workflow permissions

6.13.1

  • [Fix] stringify: avoid a crash when a filter key is null
  • [Fix] utils.merge: functions should not be stringified into keys
  • [Fix] parse: avoid a crash with interpretNumericEntities: true, comma: true, and iso charset
  • [Fix] stringify: ensure a non-string filter does not crash
  • [Refactor] use __proto__ syntax instead of Object.create for null objects
  • [Refactor] misc cleanup

... (truncated)

Commits
  • bdcf0c7 v6.14.2
  • 294db90 [readme] document that addQueryPrefix does not add ? to empty output
  • 5c308e5 [readme] clarify parseArrays and arrayLimit documentation
  • 6addf8c [Fix] parse: mark overflow objects for indexed notation exceeding arrayLimit
  • cfc108f [Fix] arrayLimit means max count, not max index, in combine/merge/`pars...
  • febb644 [Fix] parse: throw on arrayLimit exceeded with indexed notation when `thr...
  • f6a7abf [Fix] parse: enforce arrayLimit on comma-parsed values
  • fbc5206 [Fix] parse: fix error message to reflect arrayLimit as max index; remove e...
  • 1b9a8b4 [actions] fix rebase workflow permissions
  • 2a35775 [meta] fix changelog typo (arrayLengtharrayLimit)
  • Additional commits viewable in compare view

Updates @trpc/server from 10.45.2 to 10.45.4

Release notes

Sourced from @​trpc/server's releases.

v10.45.4

  • Fixes broken package.json file (#7078)

Full Changelog: trpc/trpc@v10.45.3...v10.45.4

v10.45.3

Full Changelog: trpc/trpc@v10.45.2...v10.45.3

Commits

Updates axios from 1.11.0 to 1.15.0

Release notes

Sourced from axios's releases.

v1.15.0

This release delivers two critical security patches, adds runtime support for Deno and Bun, and includes significant CI hardening, documentation improvements, and routine dependency updates.

⚠️ Important Changes

  • Deprecation: url.parse() usage has been replaced to address Node.js deprecation warnings. If you are on a recent version of Node.js, this resolves console warnings you may have been seeing. (#10625)

🔒 Security Fixes

  • Proxy Handling: Fixed a no_proxy hostname normalisation bypass that could lead to Server-Side Request Forgery (SSRF). (#10661)
  • Header Injection: Fixed an unrestricted cloud metadata exfiltration vulnerability via a header injection chain. (#10660)

🚀 New Features

  • Runtime Support: Added compatibility checks and documentation for Deno and Bun environments. (#10652, #10653)

🔧 Maintenance & Chores

  • CI Security: Hardened workflow permissions to least privilege, added the zizmor security scanner, pinned action versions, and gated npm publishing with OIDC and environment protection. (#10618, #10619, #10627, #10637, #10666)
  • Dependencies: Bumped serialize-javascript, handlebars, picomatch, vite, and denoland/setup-deno to latest versions. Added a 7-day Dependabot cooldown period. (#10574, #10572, #10568, #10663, #10664, #10665, #10669, #10670, #10616)
  • Documentation: Unified docs, improved beforeRedirect credential leakage example, clarified withCredentials/withXSRFToken behaviour, HTTP/2 support notes, async/await timeout error handling, header case preservation, and various typo fixes. (#10649, #10624, #7452, #7471, #10654, #10644, #10589)
  • Housekeeping: Removed stale files, regenerated lockfile, and updated sponsor scripts and blocks. (#10584, #10650, #10582, #10640, #10659, #10668)
  • Tests: Added regression coverage for urlencoded Content-Type casing. (#10573)

🌟 New Contributors

We are thrilled to welcome our new contributors. Thank you for helping improve Axios:

v1.14.0

This release focuses on compatibility fixes, adapter stability improvements, and test/tooling modernisation.

⚠️ Important Changes

  • Breaking Changes: None identified in this release.
  • Action Required: If you rely on env-based proxy behaviour or CJS resolution edge-cases, validate your integration after upgrade (notably proxy-from-env v2 alignment and main entry compatibility fix).

🚀 New Features

  • Runtime Features: No new end-user features were introduced in this release.
  • Test Coverage Expansion: Added broader smoke/module test coverage for CJS and ESM package usage. (#7510)

🐛 Bug Fixes

  • Headers: Trim trailing CRLF in normalised header values. (#7456)
  • HTTP/2: Close detached HTTP/2 sessions on timeout to avoid lingering sessions. (#7457)
  • Fetch Adapter: Cancel ReadableStream created during request-stream capability probing to prevent async resource leaks. (#7515)
  • Proxy Handling: Fixed env proxy behavior with proxy-from-env v2 usage. (#7499)

... (truncated)

Changelog

Sourced from axios's changelog.

v1.15.0 — April 7, 2026

This release delivers two critical security patches targeting header injection and SSRF via proxy bypass, adds official runtime support for Deno and Bun, and includes significant CI security hardening.

🔒 Security Fixes

  • Header Injection (CRLF): Rejects any header value containing \r or \n characters to block CRLF injection chains that could be used to exfiltrate cloud metadata (IMDS). Behavior change: headers with CR/LF now throw "Invalid character in header content". (#10660)

  • SSRF via no_proxy Bypass: Introduces a shouldBypassProxy helper that normalises hostnames (strips trailing dots, handles bracketed IPv6) before evaluating no_proxy/NO_PROXY rules, closing a gap that could cause loopback or internal hosts to be inadvertently proxied. (#10661)

🚀 New Features

  • Deno & Bun Runtime Support: Added full smoke test suites for Deno and Bun, with CI workflows that run both runtimes before any release is cut. (#10652)

🐛 Bug Fixes

  • Node.js v22 Compatibility: Replaced deprecated url.parse() calls with the WHATWG URL/URLSearchParams API across examples, sandbox, and tests, eliminating DEP0169 deprecation warnings on Node.js v22+. (#10625)

🔧 Maintenance & Chores

  • CI Security Hardening: Added zizmor GitHub Actions security scanner; switched npm publish to OIDC Trusted Publishing (removing the long-lived NODE_AUTH_TOKEN); pinned all action references to full commit SHAs; narrowed workflow permissions to least privilege; gated the publish step behind a dedicated npm-publish environment; and blocked the sponsor-block workflow from running on forks. (#10618, #10619, #10627, #10637, #10641, #10666)

  • Docs: Clarified HTTP/2 support and the unsupported httpVersion option; added documentation for header case preservation; improved the beforeRedirect example to prevent accidental credential leakage. (#10644, #10654, #10624)

  • Dependencies: Bumped picomatch, handlebars, serialize-javascript, vite (×3), denoland/setup-deno, and 4 additional dev dependencies to latest versions. (#10564, #10565, #10567, #10568, #10572, #10574, #10663, #10664, #10665, #10669, #10670)

🌟 New Contributors

We are thrilled to welcome our new contributors. Thank you for helping improve axios:

Full Changelog


v1.14.0 — March 27, 2026

This release fixes a security vulnerability in the formidable dependency, resolves a CommonJS compatibility regression, hardens proxy and HTTP/2 handling, and modernises the build and test toolchain.

🔒 Security Fixes

  • Formidable Vulnerability: Upgraded formidable from v2 to v3 to address a reported arbitrary-file vulnerability. Updated test server and assertions to align with the v3 API. (#7533)

🐛 Bug Fixes

... (truncated)

Commits
  • 772a4e5 chore(release): prepare release 1.15.0 (#10671)
  • 4b07137 chore(deps-dev): bump vite from 8.0.0 to 8.0.5 in /tests/smoke/esm (#10663)
  • 51e57b3 chore(deps-dev): bump vite from 8.0.2 to 8.0.5 (#10664)
  • fba1a77 chore(deps-dev): bump vite from 8.0.2 to 8.0.5 in /tests/module/esm (#10665)
  • 0bf6e28 chore(deps): bump denoland/setup-deno in the github-actions group (#10669)
  • 8107157 chore(deps-dev): bump the development_dependencies group with 4 updates (#10670)
  • e66530e ci: require npm-publish environment for releases (#10666)
  • 49f23cb chore(sponsor): update sponsor block (#10668)
  • 3631854 fix: unrestricted cloud metadata exfiltration via header injection chain (#10...
  • fb3befb fix: no_proxy hostname normalization bypass leads to ssrf (#10661)
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by [GitHub Actions](https://www.npmjs.com/~GitHub Actions), a new releaser for axios since your current version.

Install script changes

This version modifies prepare script that runs during installation. Review the package contents before updating.


Updates brace-expansion from 1.1.11 to 1.1.14

Release notes

Sourced from brace-expansion's releases.

v1.1.12

  • pkg: publish on tag 1.x c460dbd
  • fmt ccb8ac6
  • Fix potential ReDoS Vulnerability or Inefficient Regular Expression (#65) c3c73c8

juliangruber/brace-expansion@v1.1.11...v1.1.12

Commits

Updates brace-expansion from 2.0.1 to 2.1.0

Release notes

Sourced from brace-expansion's releases.

v1.1.12

  • pkg: publish on tag 1.x c460dbd
  • fmt ccb8ac6
  • Fix potential ReDoS Vulnerability or Inefficient Regular Expression (#65) c3c73c8

juliangruber/brace-expansion@v1.1.11...v1.1.12

Commits
  • 10c05fc 1.1.14
  • 1afa1b2 Add opt-in { max } mitigation to v1 legacy line (

Here's a corrected breakdown of the Elysium board's unique
 here is the placement for the top row of the Thar
tuirk and others added 21 commits March 28, 2026 09:49
- Create src/engine/ with full type system from PRD Section 5
- Add all 14 project cards (28 sides) verified against physical cards
- Add both hex maps (Tharsis, Elysium) with adjacency and bonus hexes
- Add 5 standard projects with verified costs and tag requirements
- Add ParameterReduction type for Insects card mechanic
- Add CostReduction/CreditFormula variants for Bushes and Asteroid Mining
- Create engine stubs: gameState, rules, actions, income, scoring
- Add AI placeholder files: heuristic, minimax, aiController, aiLogger
- Mark src/lib/game/ as legacy with LEGACY.md
- Smoke tests: 10 passing
- Add comprehensive PRD with game rules, AI architecture, data models
- Add phased task tracker (74 tasks across 7 phases)
- Add verification checklists for cards (28/28 verified), maps, standard projects (5/5 verified)
- Document PRD corrections found during physical card verification
- Migrate src/firebase/ → src/lib/firebase/ with real implementations
- Add auth service: signUp, signIn, signInWithGoogle, signOut, resetPassword
- Add Firestore re-exports and user document CRUD (create, get, update)
- Add AuthContext with real-time profile listener via onSnapshot
- Add UserProfile type with game stats tracking
- Add Firebase error code → English message mapping
- Create AuthCard with Sign In / Sign Up tab toggle
- Inline forgot-password flow (no separate page)
- Google sign-in button with OAuth popup
- Wrap app with AuthProvider in layout.tsx
- Conditional rendering in page.tsx: auth card or game
- Add COOP header for Google popup auth compatibility
Core engine (pure TypeScript, no UI dependencies):
- gameState.ts: game initialization, research phase, card drafting
- rules.ts: tag counting (3 sources), requirement checking (6 cost
  reduction types, parameter reductions), legal move generation with
  placement constraint validation
- actions.ts: all 9 CardEffect types, 5 standard projects, tile
  placement with side effects (resource tokens, water adjacency credits)
- income.ts: city income, water adjacency, credit cap at 5
- scoring.ts: end-game detection (3 conditions), scoring with tiebreakers
- generation.ts: phase transitions, turn management, start player rotation

Special card handling:
- Comet: conditional water placement at 5+ heat
- Aquifer Pumping: bonus credits for isolated water
- Methane from Titan: optional extra spend for bonus heat
- Insects: parameter reduction by Science tags
- All 6 CostReduction variants implemented

Tests (147 passing in ~600ms):
- Test helpers with state factory and board fixtures
- Unit tests for every engine module
- Integration test with 10 random complete game simulations
- Revert to default Firestore database (was pointing to named db)
- Add sign-out button with user info bar above GameScreen
- Auth flow verified: sign out → auth card → sign in → game
New components:
- GameScreen: full state machine (setup → research → action → income → game over)
- HexGrid + Hexagon: rewritten for shared board with placement highlighting
- CardPanel: fan layout of 3 project cards with met/unmet indicators
- StandardProjects: compact 5-icon row with tooltips
- BottomPanel: cards + standard projects + pass button
- DraftingView + CardSideView: research phase card orientation selection
- IncomeVisualization: step-by-step animated income breakdown
- GameOverScreen: score breakdown with tiebreakers
- TopBar: generation, phase, player info
- Setup flow: loading → map reveal → color assignment → city placement

Supporting code:
- usePlacementMode hook for tile/city placement interactions
- cardDescriptions.ts: CardEffect → human-readable text
- incomeBreakdown.ts: decompose income phase into animation steps
- placeholderAI.ts: random legal move picker

Deleted legacy components:
- ActionPanel, CardDraft, CityPlacement, SetupPhase, MapSelection, GameStatus

Verification: 0 TS errors, 147 tests pass, build succeeds
Bug fixes:
- Fix AI stuck on "thinking" caused by HMR killing setTimeout
  (use useRef for timer guard instead of useState)
- Fix placement mode race condition (delay request clear)
- Replace processActionPhaseStep in UI with executeAction +
  manual turn rotation to prevent auto-transition through
  postIncomePhase (was causing "Loading cards..." on gen 2+)

Composite effect fixes:
- Add Ice Asteroid (4A): water + conditional greenery return
- Add Asteroid (13B): heat + optional greenery return
- Add Moss (11A): greenery + credits per adjacent water
  (calculated AFTER placement)

Tests: 20 new composite effect tests covering all special cards
(water triggers, Power Grid, Comet, Fusion Power, Research
Outpost, Methane from Titan, Asteroid Mining, Moss, Aquifer
Pumping, Ice Asteroid, Asteroid, Lava Flows, Bushes)

Total: 167 tests passing
- Add complete game rulebook (docs/rulebook.md)
- Remove CLAUDE.md from git tracking (local-only dev config)
- Add CLAUDE.md to .gitignore
Heuristic evaluation (src/ai/heuristic.ts):
- evaluate(state, playerId) scores game state using 12 weighted factors
- Heat personal VP, greenery/water adjacency (exclusive vs shared),
  heat map penalties, credits, bonus hexes, resource tokens, legal moves
- End-game proximity modifier shifts weights toward direct VP as
  game approaches end conditions
- Exported WEIGHTS object for future tuning

AI controller (src/ai/aiController.ts):
- pickBestAction: evaluates all legal actions, picks highest-scored
- pickBestDraftSide: maximizes AI-human score gap for card orientation
- pickBestCityHex: evaluates all valid hexes for setup placement

Integration:
- GameScreen wired to use heuristic AI instead of random
- DraftingView uses pickBestDraftSide for AI card choices
- AILogDrawer: collapsible right-side panel showing AI decisions
  with scores, grouped by generation

Tests: 12 new heuristic tests (179 total passing)
- Prevent negative credits: executeAction now throws if player
  can't afford a card or standard project (defense in depth)
- Add console logging for AI actions (type, score, card details)
- Fix integration test to provide sufficient credits for actions
CRITICAL fixes:
- Fix AI draft inversion (was picking worst orientation every time)
- Fix drawCardsForResearch deck < 3 reshuffle (caused late-game freeze)
- Fix getLegalActions: populate chosenResourceToken, secondaryTargetHexId,
  optionalSpend for resource tokens, greenery returns, Methane from Titan
- Fix double click handler (HexGrid div + Hexagon svg both fired onClick)
- Add turn guards in all GameScreen action handlers (prevent rapid-click exploits)

HIGH fixes:
- Fix tiebreaker to use credits remaining (per rulebook, not score subcategories)
- Add supply guards in placeWaterTile/placeGreeneryTile/placeHeatTileOnMap
- AI pickBestAction now uses score differential (AI - human) not absolute score
- Wrap all AI controller functions in try/catch with random fallback
- Fix composite supply check: gain_heat no longer blocks composite cards

MEDIUM fixes:
- Remove generation_12 end condition (doesn't exist in rulebook)
- Add duplicate-use guards in executeAction (card + standard project)
- Fix grid bottom clipping (add quarter-hex to height)
- Convert credit throws to graceful console.warn + return
- Convert handlePass to functional updater (fix stale closure)
- Remove tile animation replay on re-render
- Add disabledReason prop to ProjectCardView for activation feedback

Tests: 179 passing (updated scoring tests for new tiebreaker/gen rules)
Tutorial system (21-step guided first game):
- TutorialProvider: React context with localStorage persistence
- TutorialOverlay: positioned tooltip with backdrop highlight cutout
- 21 contextual steps triggered at phase transitions and first interactions
- Skip Tutorial option at step 1, auto-completes after first game
- Non-blocking: player can interact while tutorial is visible

Help panel (always-accessible rules reference):
- AILogDrawer converted to tabbed: [AI Thinking] [Rules]
- HelpPanel: 10 searchable collapsible sections from verified rulebook
- CardReference: browse all 14 cards (both sides) with search
- Phase-aware highlighting shows relevant section
- Help (?) button in TopBar opens Rules tab directly

Inline tooltips:
- Hexagon: hex type, bonus tag, tile/city status
- PlayerDashboard: credits, heat, tags, tokens with explanations
- StandardProjects: full details with availability reasons
- data-tutorial attributes for tutorial highlight targeting

Verification: 0 TS errors, 179 tests pass, build succeeds
Elysium map: remove TODO:VERIFY comments, all hex data confirmed
against physical cards (water: 1,2,6,9,11; bonus: 4,7,10,17,19)

Hex visual improvements:
- Brighter water hex fill (more distinct from land)
- Thicker bonus hex borders (4px vs 2px)
- Water hexes get subtle blue border
- Bonus tag icon rendered INSIDE bonus hexes (visible without hover)
- Resource token icons larger and centered (60% of hex vs 25%)
- All icons render at better opacity for visibility
Tharsis fully verified against physical cards:
- Water hexes: 3(science), 9(nature), 10(nature), 15(nature), 16(none)
- Fix: Hex 10 resource token was 'production', corrected to 'nature'
- Bonus hexes: 1(production), 8(nature), 12(nature), 17(production), 19(space)
- Water clustering note: center-right L-shape (3,9,10,15,16)
- All TODO:VERIFY comments removed — both maps now fully verified
Minimax search (src/ai/minimax.ts):
- Alpha-beta pruning with configurable depth (default 2)
- Move ordering optimization (heuristic-first for better pruning)
- Node counter for performance tracking
- Try/catch with heuristic fallback on error

AI mode system:
- AIMode type: 'random' | 'heuristic' | 'minimax'
- pickActionByMode/pickDraftByMode/pickCityByMode dispatchers
- Mode toggle in TopBar (segmented button: 🎲 Random | 🧠 Heuristic | ♟️ Minimax)
- Mode persisted to localStorage, changeable mid-game

Enhanced logging:
- Thinking time (ms), nodes evaluated, search depth
- Top 5 evaluated actions with scores (expandable)
- Minimax vs heuristic score comparison
- Color-coded mode badges (grey/blue/purple)

Verification: 0 TS errors, 179 tests pass
Replace HexGrid + Hexagon with a single SVG MarsBoard component featuring:
- Circular Mars planet background with radial gradient and texture
- Translucent hexes with 7px thick colored borders on bonus hexes
- Puffy 3D hex tokens for greenery, water, heat tiles with depth/bevel
- White and black city tokens with building icons and player-color support
- Bonus hex icons (production/nature/science/space) and water hex resource tokens
- Green pulse animation for valid placement targets
- NORTH/SOUTH labels and map name display
- Flat top-down view replacing old 3D perspective transform

Deprecate old HexGrid.tsx and Hexagon.tsx (kept for reference).
Update MapRevealScreen to use MarsBoard.
Layout:
- Board on left (60%), right panel with supply/scoreboard/actions/cards
- Side-by-side player dashboards under "Scoreboard" label
- Standard projects + Pass as unified action buttons row
- Project cards in grid-cols-3 (no fan rotation)
- Each section in bordered container with labels
- Generation tracker: 12 circle dots filling up per round
- AI mode selector moved to TopBar right side
- Removed fixed bottom panel — everything in scrollable right column

Icons:
- Create GameIcons.tsx as single source of truth for all stamp icons
- Puffy hex stamps for heat/greenery/water/city matching board tokens
- Circular stamps for nature/production/science resource tokens
- Credits and Pass stamps
- Replace Lucide icons in Supply, ResourceTokenSupply, StandardProjects,
  and PlayerDashboard with centralized stamps

QA fixes:
- Remove dead imports (BottomPanel, Flag, cn)
- Remove dead props (generation, phase from PlayerDashboard)
- Add energy bonusTag handling in MarsBoard (style + BoltIcon)
- Fix opacity dimming: all invalid hexes dim during placement
…ture

Board:
- Etched/carved hex styles with shadow, bevel, and highlights per type
- Embossed medallion icons for bonus hexes and resource tokens
- Increased hex spacing for clean gaps between hexes
- Orbitron font for map labels (THARSIS, NORTH/SOUTH)
- Mars-colored generation tracker (orange filled/active/dim dots)

Icons:
- Centralized GameIcons.tsx with embossed medallion stamps
- TagBadge mini circle badges replace Lucide TagIcon everywhere
- Consistent icon style across supply bar, scoreboard, cards, standard projects

Layout:
- Responsive grid (lg breakpoint, adaptive padding per screen size)
- Right panel vertically centered with scrollable content
- Separate AI Log and Rules drawers with shared collapsed strip
- Drawers scroll internally, don't expand page height

Landing page:
- Hero section with Mars decoration, orbital rings, star dots
- Inline auth form (sign in/up, Google, guest play)
- "Coming soon" CTA for Solo mode and Play with a Friend

Dashboard:
- Mode selection screen between auth and game
- Player vs AI (active), Solo/Friends (coming soon, grayed)
- Player stats display, sign out
- Access control: guests blocked from multiplayer

Infrastructure:
- Shared GameFooter with legal modals (Disclaimer, Privacy, Terms)
- Mars SVG favicon
- Orbitron + Inter font system via next/font + tailwind
- Back button with leave confirmation dialog
- Play Again + Dashboard buttons on game over screen
- Equal-height project cards and draft cards
Gemini AI:
- Add 'gemini' to AIMode type (4th mode)
- Game state serializer (serialize.ts) for compact LLM context
- Genkit decision flow (gemini-decision.ts) with expert strategist prompt
- Async pickActionByMode with Gemini re-ranking top 5 minimax candidates
- Graceful fallback to minimax if Gemini API fails
- Gemini reasoning logged to AI log entries

Tutorial persistence:
- Add tutorialCompleted field to UserProfile (Firestore)
- TutorialProvider reads from Firestore via userProfile prop
- On tutorial complete: saves to both localStorage and Firestore
- Cross-device tutorial state via user document

Multiplayer prep:
- Add MatchType ('human-vs-ai' | 'human-vs-human' | 'solo') to types
- Add matchType field to GameState (defaults to 'human-vs-ai')
- Game document schema (gameStore.ts) for future persistence
- Access control helper (guests blocked from multiplayer)
- Anonymous auth (signInAsGuest) for guest play
Bumps the npm_and_yarn group with 21 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [next](https://github.com/vercel/next.js) | `15.3.3` | `15.5.15` |
| [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) | `7.26.9` | `7.29.2` |
| [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk) | `1.17.5` | `1.29.0` |
| [qs](https://github.com/ljharb/qs) | `6.13.0` | `6.14.2` |
| [@trpc/server](https://github.com/trpc/trpc/tree/HEAD/packages/server) | `10.45.2` | `10.45.4` |
| [axios](https://github.com/axios/axios) | `1.11.0` | `1.15.0` |
| [brace-expansion](https://github.com/juliangruber/brace-expansion) | `1.1.11` | `1.1.14` |
| [brace-expansion](https://github.com/juliangruber/brace-expansion) | `2.0.1` | `2.1.0` |
| [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | `4.5.3` | `4.5.6` |
| [follow-redirects](https://github.com/follow-redirects/follow-redirects) | `1.15.11` | `1.16.0` |
| [glob](https://github.com/isaacs/node-glob) | `10.4.5` | `10.5.0` |
| [handlebars](https://github.com/handlebars-lang/handlebars.js) | `4.7.8` | `4.7.9` |
| [js-yaml](https://github.com/nodeca/js-yaml) | `4.1.0` | `4.1.1` |
| [jws](https://github.com/brianloveswords/node-jws) | `3.2.2` | `3.2.3` |
| [lodash](https://github.com/lodash/lodash) | `4.17.21` | `4.18.1` |
| [minimatch](https://github.com/isaacs/minimatch) | `3.1.2` | `3.1.5` |
| [minimatch](https://github.com/isaacs/minimatch) | `9.0.5` | `9.0.9` |
| [node-forge](https://github.com/digitalbazaar/forge) | `1.3.1` | `1.4.0` |
| [path-to-regexp](https://github.com/pillarjs/path-to-regexp) | `0.1.12` | `0.1.13` |
| [picomatch](https://github.com/micromatch/picomatch) | `2.3.1` | `2.3.2` |
| [protobufjs](https://github.com/protobufjs/protobuf.js) | `7.4.0` | `7.5.5` |
| [tmp](https://github.com/raszi/node-tmp) | `0.0.33` | `0.2.5` |
| [yaml](https://github.com/eemeli/yaml) | `2.8.0` | `2.8.3` |



Updates `next` from 15.3.3 to 15.5.15
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](vercel/next.js@v15.3.3...v15.5.15)

Updates `@babel/runtime` from 7.26.9 to 7.29.2
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.2/packages/babel-runtime)

Updates `@modelcontextprotocol/sdk` from 1.17.5 to 1.29.0
- [Release notes](https://github.com/modelcontextprotocol/typescript-sdk/releases)
- [Commits](modelcontextprotocol/typescript-sdk@1.17.5...v1.29.0)

Updates `ajv` from 6.12.6 to 8.17.1
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](ajv-validator/ajv@v6.12.6...v8.17.1)

Updates `qs` from 6.13.0 to 6.14.2
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.13.0...v6.14.2)

Updates `@trpc/server` from 10.45.2 to 10.45.4
- [Release notes](https://github.com/trpc/trpc/releases)
- [Commits](https://github.com/trpc/trpc/commits/v10.45.4/packages/server)

Updates `axios` from 1.11.0 to 1.15.0
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.11.0...v1.15.0)

Updates `brace-expansion` from 1.1.11 to 1.1.14
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@1.1.11...v1.1.14)

Updates `brace-expansion` from 2.0.1 to 2.1.0
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@1.1.11...v1.1.14)

Updates `fast-xml-parser` from 4.5.3 to 4.5.6
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](NaturalIntelligence/fast-xml-parser@v4.5.3...v4.5.6)

Updates `follow-redirects` from 1.15.11 to 1.16.0
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](follow-redirects/follow-redirects@v1.15.11...v1.16.0)

Updates `glob` from 10.4.5 to 10.5.0
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](isaacs/node-glob@v10.4.5...v10.5.0)

Updates `handlebars` from 4.7.8 to 4.7.9
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.9/release-notes.md)
- [Commits](handlebars-lang/handlebars.js@v4.7.8...v4.7.9)

Updates `js-yaml` from 4.1.0 to 4.1.1
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.0...4.1.1)

Updates `jws` from 3.2.2 to 3.2.3
- [Release notes](https://github.com/brianloveswords/node-jws/releases)
- [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md)
- [Commits](auth0/node-jws@v3.2.2...v3.2.3)

Updates `lodash` from 4.17.21 to 4.18.1
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.21...4.18.1)

Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v3.1.2...v3.1.5)

Updates `minimatch` from 9.0.5 to 9.0.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v3.1.2...v3.1.5)

Updates `node-forge` from 1.3.1 to 1.4.0
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](digitalbazaar/forge@v1.3.1...v1.4.0)

Updates `path-to-regexp` from 0.1.12 to 0.1.13
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md)
- [Commits](pillarjs/path-to-regexp@v0.1.12...v.0.1.13)

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](micromatch/picomatch@2.3.1...2.3.2)

Updates `protobufjs` from 7.4.0 to 7.5.5
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
- [Commits](protobufjs/protobuf.js@protobufjs-v7.4.0...protobufjs-v7.5.5)

Updates `tmp` from 0.0.33 to 0.2.5
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](raszi/node-tmp@v0.0.33...v0.2.5)

Updates `yaml` from 2.8.0 to 2.8.3
- [Release notes](https://github.com/eemeli/yaml/releases)
- [Commits](eemeli/yaml@v2.8.0...v2.8.3)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.5.15
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: "@babel/runtime"
  dependency-version: 7.29.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: "@modelcontextprotocol/sdk"
  dependency-version: 1.29.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: ajv
  dependency-version: 8.17.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: "@trpc/server"
  dependency-version: 10.45.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: axios
  dependency-version: 1.15.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: brace-expansion
  dependency-version: 1.1.14
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: brace-expansion
  dependency-version: 2.1.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: fast-xml-parser
  dependency-version: 4.5.6
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: glob
  dependency-version: 10.5.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: handlebars
  dependency-version: 4.7.9
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: jws
  dependency-version: 3.2.3
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: minimatch
  dependency-version: 9.0.9
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: node-forge
  dependency-version: 1.4.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: path-to-regexp
  dependency-version: 0.1.13
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: protobufjs
  dependency-version: 7.5.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: tmp
  dependency-version: 0.2.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: yaml
  dependency-version: 2.8.3
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Apr 17, 2026
@tuirk

tuirk commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Closing: this PR predates the history rewrite on main and still carries the old tree. Fresh Dependabot PRs (#2+) replace it.

@tuirk tuirk closed this Aug 13, 2026
@tuirk
tuirk deleted the dependabot/npm_and_yarn/npm_and_yarn-3565c2e6e4 branch August 13, 2026 05:26
@dependabot @github

dependabot Bot commented on behalf of github Aug 13, 2026

Copy link
Copy Markdown
Author

This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests.

To ignore these dependencies, configure ignore rules in dependabot.yml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant