Weekly development

What is new in PLAYGRND

A public view of what we actually ship each week. Features are the primary signal, with technical versions kept as a verifiable trail.

Features this week 10 2026-W30 · 20–26 July 2026
Shipped features recorded 63 Weeks of visible development: 12
Weeks of visible development 12 2025-W45 → 2026-W30
2026-W30 20–26 July 2026

Liga Bez Briga, organizer control, and clearer profiles

Web v505–v629 · 125 versions API v243–v295 · 53 versions
  • Liga Bez Briga joined PLAYGRND with all 612 Best Play matches in complete 1:1 source parity: 270 cageball matches in the 3v3 format and 342 futsal matches in the 4+1 format. Leagues, seasons, teams, players, results, and source identifiers remain connected in one permanent public record.
  • Best Play identities are connected to existing profiles only when the sources confirm the same person, while contradictory records remain separate. All external IDs are preserved, and player profiles plus team-season pages use readable name-based URLs instead of technical identifiers.
  • Superadmins can now review technically suffixed profiles beside their canonical version, with both sports histories and every source identity. The workflow warns about different teams in the same season, blocks shared matches and conflicting claim or identity data, requires an explicit photo choice, and remembers pairs confirmed as different people.
  • An organization manager can now add a league with its format, venue, and default court, add venues and courts, and edit or remove existing courts from the same administration area. League order is adjusted directly beside each row, while competition rank separates first and second divisions without manual priority numbers.
  • The superadmin gained a dedicated directory for every organization, with direct access to edit any organization, league, or venue. Global organization order remains a superadmin decision, while league order inside each organization follows its manager’s selection.
  • League and tournament seasons for a team now share the same profile system, readable paths, and clearer hierarchy. A league shows position, matches, and points, while a cup immediately shows its achieved stage and trophies distinguish winners, finalists, and semifinalists.
  • Competitions, matches, and profiles now consistently show formats such as 3v3, 4+1, or 5+1 with a fallback logo when an image is missing. The ALL filter reliably restores the complete directory, while the home overview groups formats and links directly to the selected competition.
  • Selecting a player profile photo now opens a larger version in a focused desktop and mobile modal without leaving the profile.
  • Organizations can securely keep their own private match-sheet template in the PLAYGRND asset system. Authorized administrators can view and download it from organization administration, while the document remains private.
  • Team form in league standings now clearly separates wins, draws, and losses without using green for a result that is not a win. Liga Firmi rules also correctly state that the clock stops.
2026-W29 13–19 July 2026

Sun City data, tournaments, identity, and trusted AI

Web v258–v504 · 247 versions API v96–v242 · 147 versions
  • PLAYGRND now highlights a catalog of every shipped feature, generated directly from the changelog, plus a public community ideas ranking. Every completed profile can publish an idea with an initial vote and cast at most one private vote per suggestion, while the author, aggregate vote count, and status remain public.
  • Every match can now be shared on WhatsApp or as a PLAYGRND Instagram Story. The Story PNG is generated on demand from the current result, scorers, venue, and logos, includes a QR link to the match, and offers native share, download, and copy-link fallbacks. WhatsApp and other link previews use a separate current OpenGraph card.
  • Organization profiles gained separate tabs for competitions, statistics, locations, and information, with figures calculated only from their own leagues and tournaments. The global Stats page now presents activity, competition archive, community, and match rhythm.
  • Profile claims and verified identity are now separate. Existing approved claims remain verified, new users request a separate check, and the superadmin records the decision and method in a dedicated identity queue. Identity documents are not uploaded or stored in this version.
  • The League Republic API became the primary Sun City source. All 9 available endpoints were archived, and 33 league seasons were reconciled for teams, appearances, goals, cards, standings, and results.
  • Cups and supercups are now first-class tournaments: 9 editions are grouped under 4 stable tournaments with a season dropdown, 372 matches, brackets, scorers, trophies, and honors. Historical team names and logos remain tied to the correct edition.
  • Trophy cabinets now include official Sun City honors: 28 best players, 33 best goalkeepers, and 35 top scorers, including tied winners. The 2019/2020 records are marked as an unreliable reconstruction and do not alter match statistics.
  • PLAYGRND AI now works on web, WhatsApp, and Telegram: it finds players from a name alone, builds an ideal six from a team’s latest season, ranks known goalkeepers and honored players, and safely compares seasons, competitions, and teams. It understands typos, while every tool uses a bounded JSON plan, fixed read-only query, permission checks, and cost controls.
  • Signed-in users can reopen their saved web and messaging answers from the AI page. Repeated identical questions are grouped with a repeat count, and a saved result can immediately start a new question or be shared on WhatsApp.
  • A profile can generate a one-time QR code for secure sign-in on another device. The superadmin WhatsApp inbox reconstructs new conversations, tracks delivery status, and supports manual replies inside Meta’s 24-hour window.
  • AI match-sheet processing can identify a match and prepare a result from a photo, while an authorized organizer explicitly confirms the final score after review. Every change includes conflict checks and an audit trail.
  • FC Greben is shown under its former name Boje i Lakovi in the first 2019/2020 Teški Amaterizam season, which it won. Its Serie A seasons remain FC Greben, while CB Arka is a separate team.
  • Leagues and tournaments now share the competition directory, filters, search, match cards, and season selectors; profile histories and trophies are clearly separated by competition type.
  • The competition directory and organization profiles now show leagues and tournaments with the newest played season or edition first, while obsolete competitions move to the bottom.
  • Leagues and tournaments gained a final Rules tab with player format, referees, ball, match duration and clock mode, plus tracking for appearances, goals, goalkeepers, and goal minutes. League promotions and relegations appear only when officially entered.
  • League pages gained an all-time team title ranking and separate season awards for the best player, best goalkeeper, and top scorer. Historical award teams are reconnected to their profile and logo.
  • Match cards now present final scores, shootouts, regular-time scores, winners, finals, and administrative results more clearly, with team logos and competition links.
  • Team and player match histories gained filters and progressive loading of older matches without loading the entire archive up front.
  • Player profiles group appearances and goals by competition and then by season, with a clear separation between league and tournament records.
  • Organizations, competitions, teams, and players can carry a city, with competitions inheriting the organization location. Public profiles and entities show management roles compactly without confusing a public role with PLAYGRND admin permissions.
  • Known goalkeepers now carry a GK label in match lineups, while AI match sheets and administration are visible only to users with the required competition permissions.
  • Recent activity now follows match kickoff and event minute, so historical backfills no longer appear as new activity.
  • A profile view is counted on a real visit to the player, while switching between Competitions, Matches, and Trophies no longer increases the count.
  • When the AI provider or available budget is unavailable, web and WhatsApp return a clear user-facing message without disrupting the rest of the app.
  • Historical cups are protected from routine sync overwrites, while unreliable league round numbers stay hidden until each league season passes validation.
  • Public profiles, player rankings, league and tournament pages, and the competition directory gained a more compact desktop and mobile experience with correct Croatian count forms.
  • League Republic’s England subdivision flag is now read and displayed correctly as England, with the parser also fixed for standard player country flags.
  • Global AI questions with an excluded nationality, such as players who are not Croatian across all competitions, are now supported without requiring a league or team.
2026-W28 6–12 July 2026

Admin, design, pitch, and AI pilot

Web v149–v257 · 109 versions API v54–v95 · 42 versions
  • New desktop and mobile navigation shell, redesigned home, and clearer public profiles.
  • Scoped organization, league, venue, court, and team editing with R2 images and audit.
  • Player view counts, Redis aggregation, and Most viewed ranking.
  • First WhatsApp AI match-sheet pilot and public PLAYGRND pitch for organizers and investors.
2026-W27 29 June – 5 July 2026

Identity, claims, and organizer foundation

Web v50–v148 · 99 versions API v16–v53 · 38 versions
  • WhatsApp passwordless login, profile completion, and existing-player claims.
  • Superadmin and scoped roles, claim queue, session management, and audit log.
  • Fast async WhatsApp webhook with Redis deduplication and no raw hot-path storage.
  • Profile hub and foundations of the private organizer console.
2026-W26 22–28 June 2026

Production stabilization

Web v11–v49 · 39 versions API v6–v15 · 10 versions
  • Hetzner becomes the stable production origin while HP remains the local worker and control plane.
  • Scrape and ingest flow is separated from production with verifiable archives and a private Go API.
  • Deploy, Redis, health, and operational guardrails were hardened.
2026-W23 1–7 June 2026

Current production counter begins

Web v1–v10 · 10 versions API v1–v5 · 5 versions
  • Initial Hetzner release model established with separate API and web versions.
  • Systemd, Caddy, PostgreSQL, Redis, and GitHub Actions form a reproducible production path.
Foundations before the current counter
2026-W04 19–25 January 2026

Search and season views

  • Unified SSR search across players, teams, leagues, and venues.
  • Team tabs and team pages within a concrete league season.
2026-W03 12–18 January 2026

Sun City history becomes product

  • Matches, venues, players, identities, and historical seasons gain public SSR pages.
  • Offline-first ingest, parity checks, stable users, and safe duplicate merging.
  • Player statistics and team logos aligned with source data.
2026-W02 5–11 January 2026

Seasons, standings, and split environments

  • Separate dev/prod environments, R2 buckets, and safer deploy/sync flow.
  • Season URLs, standings, scorers, and controlled data refresh.
2025-W48 24–30 November 2025

Ingest and local production parity

  • Idempotent Sun City ingest, deterministic JSON, and historical capture tooling.
  • macOS blue/green local setup, sockets, Redis, and backup automation.
2025-W47 17–23 November 2025

Football data model

  • Organizations, leagues, teams, venues, courts, cups, and matches gain a stable model.
  • R2 assets, presigned uploads, backups, CLI, and first public listing pages.