Lịch sử phiên bản

What changed, newest first, written from what the project actually contains.

This changelog is maintained by hand in the page source. The repository does not record release dates, so none are shown: the entries are ordered, not dated. The two dates the app does track are the bundled game-data snapshot, 2026-09-16, which the footer also shows, and the brawler roster sync, currently 15/09/2026.

1.0.0Recruitment boards

current

Five boards with their own posts, filters and per-post chat, backed by the same local database as everything else.

  • Team, friend and club recruitment boards plus a general and a theme board.
  • Each post carries a chat thread; posting a message bumps the post back to the top of its board.
  • Recruitment posts take a mode, a trophy floor, a minimum ranked tier and a language; each board can be filtered by mode, trophy floor, language and status.
  • The minimum-rank field on the new-post form is populated from the ranked tier labels this instance has actually observed, so it never offers a tier that no longer exists.
  • Posting requires an account; the author can close a post when they are done or delete it outright.
  • Board posts survive account deletion with the author name recorded on the row - see the privacy policy.

0.4.0Real ranked, prestige and fame fields

The official API turned out to publish several fields the site had been estimating. Those estimates were deleted rather than kept as a fallback.

  • Ranked tier index, tier name, elo and season id are now stored per player, along with the season and all-time peaks.
  • Total prestige level, fame and fame tier are stored and displayed as measured values.
  • Per-brawler prestige, current and max win streak, and the equipped skin are indexed.
  • The ranked tier-label table is learned from observed profiles instead of being hard-coded, so a Supercell rename does not leave stale labels behind.
  • Equipped skins are recorded per player and per brawler, which is what the skin usage ranking counts.
  • New columns are applied to existing installations by an explicit ALTER step, so upgrading does not mean discarding the database.
  • The announcement stating that ranked score was an estimate was replaced by "Ranked, prestige and fame now read from the API"; installations seeded before that correction are updated in place.

0.3.0Roster synced from the official API

The bundled brawler list stopped being hand-maintained. A sync script pulls the live roster and writes a generated file that the app imports.

  • npm run sync fetches the roster from the official API and regenerates the bundled data file.
  • Every brawler carries its real star powers, gadgets, hypercharges and gears, with real ids and names.
  • Rarity and class are the only fields the API omits; they are looked up by name from a separate table and left as unknown rather than guessed.
  • Brawlers newer than that table render in neutral grey and are excluded from rarity totals, and a check script lists what still needs classifying.
  • Brawler, profile-icon, club-badge and map art is served from the open Brawlify CDN, with a lettered fallback chip whenever an asset is missing.

0.2.0Live API integration and the refresh queue

The site went from reading demo data to polling the official API continuously and keeping its own index of what it has seen.

  • A single API module wraps the official endpoints; pages talk only to a service layer that reports whether a value came from the API, the local cache or the demo generator.
  • Player and club profiles are cached briefly in SQLite and served from there on an API failure, so a rate limit does not blank a page.
  • A priority refresh queue polls bookmarked and recently viewed accounts aggressively and everything else slowly, with a shared token bucket holding the whole process inside the API rate limit.
  • Battle logs are archived on every fetch, because the API only ever returns the last 25 matches, and are rolled up into the daily aggregates the tier lists read.
  • On the first start with a token, the official leaderboards for eight countries are walked so that name search has a corpus immediately.
  • Background sync runs in-process on a long-lived server, or from an external scheduler through the cron endpoint on platforms that cannot hold an interval.
  • Manual refresh, with a per-tag cooldown, and a health endpoint reporting index sizes, queue depth and the last API error - including an explicit hint for the IP-bound token failure.
  • Demo data seeded before a token was configured is purged in full the moment a real token appears.

0.1.0Initial build

The shape of the site: routing, translations, the component vocabulary and the local database.

  • Locale-prefixed App Router pages in Traditional Chinese, Simplified Chinese, English and Japanese, negotiated in middleware from a cookie and then Accept-Language.
  • A small set of shared UI primitives and five hand-written SVG chart types - no component library, no chart library.
  • Dark and light themes driven entirely by CSS variables, with the choice remembered in the browser and applied before first paint.
  • Player and club pages, tag and name search, tier lists, leaderboards, the calculators and the map rotation.
  • SQLite via the binding built into Node, holding accounts, bookmarks, viewing history and the player and club directory.
  • Accounts with no email address: a username, a scrypt-hashed password and a session cookie.
  • A deterministic demo mode so the site is fully explorable before an API token exists.
Lịch sử phiên bản · BrawlPeek