FRONTICE WINDOWS UPDATER
========================

SUPPORTED BROWSERS
Chrome or Microsoft Edge on Windows.

FIRST-TIME SETUP
1. Extract this ZIP to a permanent folder such as Documents\FrontIce Updater.
2. In Chrome, open chrome://extensions
   In Edge, open edge://extensions
3. Enable Developer mode.
4. Choose Load unpacked and select this extracted folder.
5. Open https://frontice.com/admin
6. In FrontIce Windows Updater, choose Generate pairing code.
7. Click the FrontIce updater icon in your browser, enter the code and pair it.
8. Stay signed in to LeagueGaming and EA in this same browser.

USING THE UPDATER
- Start one of the four updates from FrontIce Admin.
- All LG Members follows the public pages exposed by LeagueGaming's official
  member directory. It stores public member IDs, usernames, profile links, and
  titles only. It does not guess hidden member IDs or read private profile data.
- S55 Bidding List remains separate and preserves the official LG Status field.
- Version 1.7.19 accepts official signed roster players when LG leaves their position blank. Their position stays unknown; their member identity, salary and team must still be valid, and explicitly invalid positions still stop the scan.
- Version 1.7.18 fixes roster scans stopping on decorative leadership jerseys, Training Camp headings and unsigned players with no position listed. Actual contract rows remain authoritative, and unreadable player rows still stop an incomplete scan.
- Version 1.7.17 reports readable progress for all five roster leagues and keeps completed scan results safe if a diagnostic progress request is temporarily unavailable. Season-specific confirmed empty teams remain visible in FrontIce Admin.
- Version 1.7.15 accepts explicitly confirmed empty teams omitted by LG (currently Sherbrooke Phoenix in S55 CHL). Active team identities remain available and any visible roster is scanned normally. Unexpected missing teams and existing saved rosters remain protected.
- Version 1.7.14 allows unsigned players marked No Contract without stopping the roster scan or treating them as signed. Managers remain included even without a contract.
- Version 1.7.13 reads complete roster tables, including salary columns, accepts the RA badge, and excludes optional player-status and contract-term display text from roster parsing.
- Version 1.7.12 retries the alternate exact player name after temporary EA lookup failures and rejects malformed responses. FrontIce refreshes exact EA stats older than 24 hours, preserves saved stats when a refresh fails, and resumes interrupted scans at the last accepted batch.
- Version 1.7.11 collects EA SPORTS NHL 27 Pro Clubs player statistics from the official NHL 27 player page, tags every result as NHL27, and starts a separate NHL 27 matching pass without overwriting the NHL 26 archive. It retains the v1.7.8 management fixes and the v1.7.7 EA timeout fix.
- Version 1.7.7 adds a 12-second timeout to every EA player search request. A stalled EA response is treated as a temporary failed check, the batch continues, and the player stays eligible for a later EA retry instead of leaving the update stuck at 99%.
- Version 1.7.6 fixes Season 55 roster-management role scoping so each manager keeps the role attached to their own roster entry (Owner/GM/AGM or GM/AGM/PAGM by league). It also keeps the paced LG Draft profile checks from v1.7.5. When
  LeagueGaming temporarily rate-limits or requests browser verification, the
  updater cools down automatically and resumes the same batch without losing
  completed work. It also retains the official S55 rendered-roster detection,
  salary recognition and Owner/GM/AGM/PAGM badges from version 1.7.4.
- Version 1.5.2 matches LGHL Draft Pick rights to the NHL organization that held
  the player at the end of S54 after trades and assignments, using the final
  NHL/AHL/ECHL rosters and official transaction history. LGNCAA rights remain
  tied to their official S54 results. Team-owned picks are always excluded from
  bidding; a failed lookup stays excluded and is flagged for review.
- Version 1.5.0 added the dormant read-only live-bidding observer foundation.
- Keep Chrome or Edge open while it runs.
- EA matching checks PS5 players by LeagueGaming username first, then their
  listed gamertag. Xbox players use the listed gamertag first.
- Every EA result must still exactly match the name used for that search.
- The updater checks only the requested player pages and sends validated player
  results to FrontIce.
- A failed player check keeps the previous saved value.

READ-ONLY LIVE BIDDING PREPARATION
The LeagueGaming observer is disabled until the real bidding page is available
and its exact fields can be mapped. When enabled later, it will watch only page
changes already rendered by LG, debounce and deduplicate snapshots, and make
zero additional requests to LeagueGaming. It cannot submit, raise, cancel, or
automate bids. Only normalized public bidding fields are sent to FrontIce.

PRIVACY
The extension does not request browser-cookie permission and never sends your
LeagueGaming or EA password or cookies to FrontIce. Its FrontIce device token is
stored locally in the browser and can be revoked from FrontIce Admin.

UPDATING FROM AN EARLIER VERSION
Replace the old extension files with this package, then click Reload on the
extension page. Version 1.7.7 adds finite EA request timeouts so a single stalled EA response cannot block the final batch. It retains the v1.7.6 management-role parser fix, paced LG Draft requests, automatic rate-limit cooldown, browser-verification recovery, safe batch resume, S54 season-end Draft Pick rights correction and read-only live-bidding preparation.
Generate one new pairing code at https://frontice.com/admin.

OFFICIAL SITE
https://frontice.com

ROSTERS AND SALARIES (v1.7.11)
After deploying FrontIce, run S55 Roster Commitments once. This scans all five
official roster pages, including signed members outside the bidding pool.
The complete scan supplies shared team rosters, salaries and bidding exclusions.

ROSTER ROW REPAIR (v1.7.11)
Reload this extension and run S55 Roster Commitments again after deployment.
Numbered player rows take precedence over jersey links. Visible names without
an exposed LG member ID can now be imported; no ID is invented.
The Reading Royals screenshot fixture imports GM + AGM + two signed players
with a 1,750,000 salary total. NHL cap 40M remains included in FrontIce.

Version 1.7.20 requires exact per-team roster identity proof for the verified S55 catalog. season-manifest.js must remain beside background.js.

RELOAD THIS NEW PACKAGE
Upgrade to version 1.7.20 by downloading this ZIP, extracting it into a fresh folder and loading that exact folder in Chrome or Edge. The canonical lg-rosters-s55-v1 catalog requires 1.7.20; older updater protocols are incompatible.
