Battle activity: a year of days
Recorded battles stay visible. Empty days need complete recording before they can mean quiet.
Each player's own record under Settings › Players & tracking carries your battle activity beside its recording details: a year of days, one cell per UTC day coloured by how the day went and shaded by how much was played, drawn from the battles already in the record; nothing is read from the game to draw it.
What is drawn
The year. One cell per UTC calendar day for the last 365 days, weeks in columns and Monday at the top, newest on the right. A cell carries two things. Its hue is the day's win share: all losses is red, all wins is blue, and an even day sits between. Its shade is the volume, four steps scaled to that player's own busiest day, so a player who plays five battles on a good evening reads as clearly as one who plays fifty. Draws and battles without a resolved result count toward the volume and toward neither side of the share; a day with no decided battle at all keeps the neutral purple. Tap or focus a cell and the day's count and record are written under the graphic; the list beneath it holds the last two weeks as a table. On a phone, recording labels wrap so the date, recorded count and win/loss result stay together within the page.
Days in the year graphic are UTC calendar days (midnight to midnight), not
the 10:00 UTC game days the series tools and the war grid use. The graphic
reads canonical battle rows by their UTC date, which is the day a
person reads off a calendar; the game day exists to line battles up with the
season and war clock, and a graphic of "did they play on the 12th" is not a
war question. A late-night session (after 10:00 UTC, before midnight) is one
cell here and one game day in players_timeline; a session between midnight
and 10:00 UTC is the next cell here and still the previous game day there.
Missing recording is not zero
A day with battles in the record always shows that positive activity, including battles imported on tracking or seen in another player's log. It says how many battles were recorded and whether that day's recording is complete, incomplete or unknown. A positive count alone does not establish complete recording.
An empty day means covered quiet day only when complete, comparable profile reading intervals cover the whole closed UTC day without gaps. The intervals compare the change in the profile's lifetime battle counter with canonical battles recorded between the readings: the same evidence contract as Completeness. Counter resets, missing counters, more recorded battles than the counter explains, or unmatched counter increases cannot establish completeness. The counter includes some modes the battle log may not show; an unmatched increase is incomplete evidence, not proof of a missing particular battle.
Other empty days are hatched: recording incomplete or unknown, never an inactive day or a break from play. A successful battle-log read, a tracking start date or a freshness stamp cannot prove a quiet day. Today's UTC day is still open, so its complete-day recording is not established. Tap a cell for its dated reading; the list beneath the year names the same recording state without colour.
How it is read
The window is the last 365 UTC dates through today. Its canonical battle counts and reading intervals are read together from one database read, so late arrivals repair the count and interval together. Missing nightly metadata does not delay the graphic, and stale metadata cannot truncate newer activity. No request to the game is needed. The evidence-read timestamp dates the graphic; “tracked since” is account context and does not establish coverage.
The nightly activity job maintains descriptive metadata and read-audit marks. Those cached marks and receipts of successful reads do not decide which empty days are quiet in this graphic. No older recording is manufactured or backfilled by viewing the year, and no first-read arrival time is promised.