Loading
Loading/Simulating...
(Please do not close window!)
x
⚠️

Onboarding polish: validated custom imports, tutorial step indicator, Discord CTA

Tino H. Tino H.

This drop focuses on onboarding and custom games: custom league imports get server-side validation (with i18n error messages), custom team logos render as SVG with a transparent PNG fallback, the tutorial gets a clear step counter, and a fresh Discord CTA beneath the existing-games box invites everyone to the community channel.

📥 Custom imports: file upload + validator

  • Import page now accepts direct CSV file uploads (teams, players) instead of URL-only entry — much faster onboarding for league imports from tabletop or your own tools
  • Server-side validator on upload: column count, required fields, value ranges (OVR 0–100, age 18–45 etc.) and a slimmer schema variant with fewer required columns
  • Error messages in DE + EN with locale-specific thousand separators (e.g. „Zu wenig Fans (1.000.000) — Mindestwert 1,5 Mio." vs. EN „Fanbase too low (1,000,000) — minimum 1.5M")
  • Off-by-one bug in the CSV templates on the first player record fixed — templates now load cleanly
  • nfl-import53.py generator synchronised with the slimmer schema

🛡️ Custom game logos now as SVG

  • Custom game saves now render team logos as SVG by default (instead of PNG) — crisp at any size, smaller footprint
  • Pre-cache before startgame.php: as soon as the logo URL is known, the SVG is fetched in the background; a generic fake-SVG fallback is staged in case the download fails
  • .htaccess rewrite redirects missing .svg requests to .png automatically — old custom saves without an SVG asset still work
  • Permanently failed downloads are skipped on retry, parallel retries are bundled — clean custom-game onboarding even with flaky source CDNs

🎓 Tutorial polish

  • New step indicator directly under the tutorial nav: shows „Step X of Y" at all times so it's obvious how much is left
  • EN typo „+5%% OVR" → „+5% OVR" fixed
  • Updated roster depth screenshot in tutorial step 4
  • DE wording on franchise.php: „Konto" → „Balance" for the EN version so vocabulary stays consistent across languages

💬 Discord CTA placed prominently

  • New Discord banner directly below the existing-games block on the landing page — instantly visible for anyone opening the site
  • The feedback overlay also gets a Discord CTA below the submit button — bug reports and feature wishes get a direct live channel
  • Asset grafiken/discord.png shipped

🎨 Team polish

  • teams.php: new „Team Colors" column with a small gradient chip (color1 → color2) — sortable + searchable
  • 12 fictional teams with too-light color2 get a contrast bump so white text on the secondary colour stays reliably readable — no more grey-white player names in the trade or roster overlay

🤝 Trade cap consistency

  • trade.php gets a 3-pick cap per side as a counterpart to the existing 5-player cap — prevents giant pick packages that would later blow the draft-room limit
  • checkTeamNeeds() respects the cap lock: already-limited checkboxes are no longer wrongly re-enabled when the needs highlights re-render
  • Selected players are now reliably counted from the idstring instead of :checked — works even after DataTable filter changes that detach unmatched rows from the DOM

Onboarding day: custom imports get more defensive, the tutorial gets clearer, custom logos get prettier, and the Discord entry point is visible to everyone. Plus the last gaps in the trade cap system are closed so pick packages no longer spiral out of control.

« Blog