v0.18.4 - 2026-08-19

🟢 * Add - Player Positions setting - reduce the available field positions (for example goalkeeper + field player for futsal). Position dropdowns, squad grouping, and sorting follow the enabled set, and players with a disabled position stay visible in a trailing squad group. Position letter chips on match lineups and missing players are now color-coded per role (goalkeeper blue, defender green, midfielder orange, forward red) - on by default, turn it off in Settings > Player Positions.
🟠 * Fix - Renamed position labels (Settings > Text & Labels) now also apply in the admin: player Position dropdown, Players list column, and the match lineups editor.
🟢 * Add - per-match player position in the game lineups editor - set the position a player played in a specific game (for example a field player who kept goal). Goalkeeper stats such as goals conceded and clean sheets follow it, and the player profile shows goalkeeper stat columns for those matches - both column sets appear when a player played in both roles.
🟠 * Fix - Half-time minutes correction now follows the configured match duration (futsal 40-minute matches no longer lose a minute at the wrong half-time mark), and clean sheets for goalkeepers substituted out are judged relative to match duration instead of a fixed 60-minute threshold.
🟠 * Fix - Games from competitions marked as Friendly were counted in the player statistics table and its totals. Friendly games now stay out of the statistics and still appear in the player's match list.
🟠 * Fix - Standing table column headers and tooltips disappearing after saving the plugin settings.
🟢 * Add - Standing shortcode "partial" attribute accepts comma-separated segments to show several slices together (e.g. "1-3,45"); rows removed between and around the slices are marked with a separator row. This also fixes club mode showing the full table instead of the rows around the club on some standings.
🟠 * Fix - Club galleries created before 0.18.0 appeared empty in the club editor's Media tab, and adding new images there permanently removed the existing ones. The same galleries never reached the frontend either - the classic club page and Layout Builder v1 layouts still read the old storage location. Legacy galleries now display, survive edits, and render on the site.
🟢 * Add - Data Import tool: "Special Status" column for Games (Insert) and Games (Update) - set unplayed matches as Postponed, Time To Be Defined, or Cancelled during import (use TBD to mark matches as not yet scheduled).
🟢 * Update - "Group Players by Position" squad option now defaults to No for clubs that never set it, and players without a position are no longer hidden when it is enabled - they render in a separate group at the end.
🟠 * Fix - Competitions whose first stage is stored as a multistage stage pointing at itself (common for leagues imported from the API, e.g. Premier League, Serie A, La Liga, Bundesliga, Ligue 1, Champions League) were skipped by the [anwpfl-competition-list] shortcode - about a third of competitions - and left the Missed Matches section on the player profile empty. Both now work.
🟠 * Fix - Club squad showed an empty staff card when a staff member had been deleted or unpublished. Those entries are now skipped.
🟠 * Fix - The [anwpfl-competition_header] shortcode showed the current page's title instead of the competition name whenever it was placed on a page other than that competition's own page.
🟠 * Fix - Every XML sitemap page after the first returned a "not found" status to search engines, even though it listed the URLs correctly. On a site with a static front page that left all but the first 2000 matches, players and clubs out of the sitemaps.