Profilo26 settembre 2026 26 settembre 2026 25 settembre 2026 25 settembre 2026 24 settembre 2026 24 settembre 2026 24 settembre 2026 24 settembre 2026 24 settembre 2026 24 settembre 2026 24 settembre 2026 23 settembre 2026 23 settembre 2026 21 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 20 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 19 settembre 2026 18 settembre 2026 18 settembre 2026 17 settembre 2026 17 settembre 2026 16 settembre 2026 16 settembre 2026 1 settembre 2026 1 settembre 2026 1 settembre 2026 1 settembre 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 30 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 29 agosto 2026 28 agosto 2026 29 agosto 2026 28 agosto 2026 28 agosto 2026 28 agosto 2026 28 agosto 2026 28 agosto 2026 28 agosto 2026 28 agosto 2026 28 agosto 2026 28 agosto 2026 27 agosto 2026 25 agosto 2026 25 agosto 2026 24 agosto 2026 24 agosto 2026 24 agosto 2026 24 agosto 2026 24 agosto 2026 16 agosto 2026 8 agosto 2026 8 agosto 2026 8 agosto 2026 8 agosto 2026 8 agosto 2026 8 luglio 2026 8 luglio 2026 8 luglio 2026 7 luglio 2026 7 luglio 2026 7 luglio 2026 7 luglio 2026 7 luglio 2026 6 luglio 2026 6 luglio 2026 6 luglio 2026 6 luglio 2026 6 luglio 2026 6 luglio 2026 6 luglio 2026 5 luglio 2026 5 luglio 2026 5 luglio 2026 5 luglio 2026 4 luglio 2026 4 luglio 2026 4 luglio 2026 4 luglio 2026 4 luglio 2026 4 luglio 2026 4 luglio 2026 4 luglio 2026 4 luglio 2026 3 luglio 2026 3 luglio 2026 3 luglio 2026 2 luglio 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 28 giugno 2026 27 giugno 2026 27 giugno 2026 27 giugno 2026 27 giugno 2026 27 giugno 2026 26 giugno 2026 27 giugno 2026 24 giugno 2026 21 giugno 2026 21 giugno 2026 20 giugno 2026 20 giugno 2026 20 giugno 2026 20 giugno 2026 20 giugno 2026 19 giugno 2026 18 giugno 2026 18 giugno 2026 16 giugno 2026 15 giugno 2026 15 giugno 2026 15 giugno 2026 15 giugno 2026 15 giugno 2026 15 giugno 2026 15 giugno 2026 15 giugno 2026 14 giugno 2026 14 giugno 2026 14 giugno 2026 13 giugno 2026 13 giugno 2026 13 giugno 2026 13 giugno 2026 13 giugno 2026 13 giugno 2026 12 giugno 2026 12 giugno 2026 12 giugno 2026 12 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 11 giugno 2026 10 giugno 2026 8 giugno 2026 8 giugno 2026 8 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 7 giugno 2026 3 maggio 2026 28 aprile 2026 2 maggio 2026
Novità
Le novità di HCW Live.
Sign-in tells you when it cannot work right now
Più recente- •When the Hillclimb World sign-in could not be reached, tapping Sign in could leave you on a bare error page, or spinning with no end. Now it checks first: if sign-in is down, you stay on the page, it says so plainly, and you can try again or go straight back to live timing — which never needed an account.
- •Signing in from your profile shows the same clear message instead of a line of technical text.
The live table opens in the view you chose
- •If you had switched the live table to Napredni or Inženjerski, opening or refreshing the page first showed the simple table — and a moment later every row jumped as the sector times arrived and pushed the rows down (Inženjerski even built the whole table again). The page now remembers your choice and opens in it, sector times and their colours included, so nothing moves. The very first visit after this update still does it once.
The table keeps its times through a hiccup on our side
- •If our timing data could not be read for a moment, the live table used to be overwritten with a half-empty copy: cars lost their gap to the car ahead, a finished driver could pop back onto the track with no time, and anyone who opened the page just then saw only a handful of cars. The table now keeps the last correct times until the data is back. In a test that cut the data off for 40 seconds on a 213-car Buzet heat, viewers used to be sent 5 cars with blanks in them; now nothing on their screen changes, and someone opening the page mid-outage gets the full, correct table.
A big crowd on one mobile network is let in
- •On a hill, hundreds of phones on the same mobile network often reach us from one shared address. The live timing counted every one of them against a single limit meant for one busy visitor, so on a big race day the phones past that limit could show "offline" with a frozen table. The live stream and the table refresh now have their own, ten times larger allowance: in a test with 2,000 viewers on one address, all of them were watching within 40 seconds instead of three minutes, and nobody was turned away.
No placeholder flash when the page loads quickly
- •While the live page loads it shows a grey placeholder of the table. On a good connection it only flashed for a third of a second before the real table replaced it — and because the placeholder still had two rows the page lost long ago, the table jumped when it arrived. The placeholder now waits a moment before it appears, so a quick load goes straight to the table, and when it does show on a slow connection it sits exactly where the table will be.
The live page opens in its final layout
- •Opening or refreshing the live page used to draw it twice. Until it had fully loaded, the page could not tell a phone from a computer, so a phone first got the desktop rows and a moment later every row shifted into the phone layout; a computer first got the phone header, and then the search field and the split-view button popped in and pushed the table down. The header also said "Select session" until it caught up with the heat already on screen. The page now arrives in the layout your screen keeps, with the heat named from the start — nothing moves once it is there.
Class pills without the coloured edge
- •The class and group pills — in the timing table, on the driver card and on the start list — carried a coloured stripe down their left edge on top of their colour. The tint alone already says which class it is, so the stripe is gone and the pills read cleaner.
Watching costs almost no data between updates
- •While you keep the live page open and nothing on the hill changes — a finished heat, a break between runs — the app used to fetch the entire table again every ten seconds: about 2 MB a minute on a Buzet heat, well over 100 MB an hour. It now receives the table only when something in it actually changes, and a quiet page costs about 1.5 KB a minute. Opening the page no longer downloads the table twice in its first seconds either. When a time does change, it still arrives straight away.
Results in a tenth of the data
- •The Rezultati and Rezultati treninga tables are fetched in full when you open them, when you come back to the app, and every 30 seconds while you keep them open. For Ilirska Bistrica that was over 900 KB every time, sent uncompressed. It now arrives compressed in about 93 KB — a tenth — so the results appear sooner on a weak signal and a long afternoon on the Results tab costs a fraction of the mobile data. The standings themselves are exactly the same.
A tenth of the data when you come back to the app
- •Every time you unlock your phone or switch back to the live page, it fetches the full standings so you are never looking at an old table. The page itself always arrived compressed, but the standings never did: for a Buzet heat that was about 760 KB on every single unlock. They are now compressed too and arrive in about 77 KB — a tenth. On a hill where hundreds of phones share the same few cell towers, that is the difference between the table being there when you look and waiting for it. What you see does not change at all; it is the very same data, packed smaller on the way.
Less work for your phone while you watch
- •The timing table redrew every one of its rows every few seconds — on every keep-alive and every safety-net refresh — even when not a single time had changed. On a Buzet heat that is more than two hundred rows, over and over, for as long as the page stays open. It now redraws only the rows that actually changed, and nothing at all while the standings stand still: measured on a finished Buzet heat, the page does about a tenth of the work it did between updates. That is the kind of work that drains a phone on a long race day.
Results no longer say the connection is down
- •On the Results tab, the little status dot in the header turned red after a few seconds and read "No connection" when you pointed at it — while nothing was wrong at all. That dot watches the live timing of a single session, which the Results tab does not use, so it went on waiting for something that was never coming and then gave up out loud. It now stays calm there and says it is ready.
Every championship in its own groups
- •The previous release put a driver in the right group for the championship you picked — as long as that group also existed at the race. When it did not, the app fell back to the driver’s class at the race itself. At Buzet nine drivers run Grupa 5 in the European championship and Grupa 7 in Prvenstvo Hrvatske, and the race’s own class list has no Grupa 7, so under the Croatian filter they were shown, and ranked, in Grupa 5. Slovenia’s Skupina 5a and 5b and the Croatian historic classes went the same way. Each championship now carries its own groups, taken from its 2026 regulations, so under each one a driver stands, and is placed, in the group they are actually entered in there.
- •The same group now has the same name at every race. Every timekeeper writes it their own way — Prvenstvo Hrvatske’s seventh group is "Grupa 7" at one race, "Klasa 7" at another and just "7" at a third — and with Prvenstvo Hrvatske picked, all three now read Grupa 7.
- •The group filter is back, and the filters now narrow in order — championship, category, group, class — each offering only what is left after the one before. Prvenstvo Hrvatske abolished classes this season and runs eleven groups in two categories, so with it picked the class filter steps aside.
- •Historic classes are short on the chip — A1, B3 — and the full name, capacity band included, is there when you hover over it.
The right class under the right championship
- •A driver can run one group in Europe and another at home — Matija Jurišić is Grupa 4 for the European championship and Grupa 3 for Prvenstvo Hrvatske, and both are correct. In the results, filtering to a national championship still showed everyone in their European group. It now shows the group that actually applies to the championship you picked, in the class pill, in the class filter and in the class standings. At Buzet that affected 25 of 242 entries.
Why the timing lagged today
- •A live connection that ended badly — a phone going into a tunnel, a screen locking, a tab being killed — was never tidied away afterwards. The work it was doing carried on: a keep-alive every five seconds and, worse, a full rebuild of the standings every ten, forever, for someone who was no longer watching. Across today’s race that piled up until the timing ran out of memory and restarted, twice. That is what was behind timing that lagged and a car still shown on track minutes after it had finished.
- •It also explains why the app could feel different on a phone than on a big screen: a phone loses and remakes its connection constantly — every lock, every tunnel, every switch between wifi and mobile — so it left far more of this behind. A connection is now let go the moment you stop watching, however it ended.
A session put back by hand is noticed again
- •If a session was changed outside the timing bridge — set back by an organiser or repaired by hand — the bridge went on believing its own earlier decision and never looked at the record again. That is how a race this morning ran to a dozen results while its row still said it had not started, and why the alert its followers were waiting for never went out. The bridge now checks the record itself, so a change made anywhere is picked up on the next update.
- •Machine translation is switched off across the app. Chrome offering to translate a page it is already reading in five languages was replacing the text under the app and crashing it outright — three separate crashes from one phone during today’s race.
Search you can actually hit, and a compare table that reads right
- •On a phone the search icon in the timing filter bar could be impossible to tap. It sat inside the row that scrolls sideways, pinned to the right with a margin that stops working once that row overflows — visible at the edge, but the tap landed on the scroller instead of the button. Search now sits outside the scrolling chips, always in the same place, and is a full finger-sized target.
- •In compare, a run time was printed smaller than the sector times above it, which reads the hierarchy backwards: a run is a whole climb, a sector is a piece of one. Largest to smallest is now best, then run, then sector.
A car still climbing no longer looks finished
- •While a car is on the hill its row shows the clock it is running against. On a fast car that number is entirely believable as a finished time — one driver showed 2:16 while the leader had won in 2:31.815 — and the only things saying otherwise were the missing thousandths and a grey tint. The running clock now ends in an ellipsis, the same mark the unfinished sector list already carries on that row, so one glance tells you it is still going.
The map could crash the page after you left it
- •Leaving a track map while it was still zooming could throw an error a moment later, on whatever page you had just opened — the map finishes its zoom on a timer of its own, and by then it had already been taken apart. The map is now told to stop before it is removed, so nothing is left running after you navigate away.
The phantom clock now survives a restart
- •The previous release gave up on a car that had been "on track" implausibly long — but the clock lived only in the running process, so a deploy handed the next such car a clean slate. It now reads the time the board already has, which is kept across restarts, so a car that has been standing there half an hour is dropped immediately rather than granted another six minutes.
A car that was never on the hill, again
- •When a timing feed sends no start signal, the app works out who is climbing from the running order — the next driver who has not finished is the one on the road. A driver at the head of that queue who never actually starts has nobody behind him to finish and push him off, so he stayed there: at Buzet one car sat "on track" for twenty-nine minutes on a hill whose slowest run is four and a half, long after the organiser had dropped him from their own screen. The projection now gives up on a car that has been up there longer than any run of the day plausibly takes.
Compare lost everyone who had not started yet
- •Comparing across a whole event offered only the drivers who had already run the race. The moment the first heat began, everybody still waiting their turn disappeared from the picker — their training times with them — so during a race you could not line up your own driver against anyone until he had been up the hill. A weekend is a weekend: the list is now everyone who has driven it, race times where they exist and training times where they do not.
- •The list is also in an order you can search by eye again. Mid-race nobody has an overall position yet, because that needs every heat — so every driver scored the same and the list came out in whatever order the database returned, opening somewhere in the middle of the field. Ranked drivers first, then everyone else by start number.
Two ways into Compare that were closed
- •The head-to-head block on My Drivers only appeared once you already followed someone — which shut it off for exactly the person most likely to be looking for it. Comparing never needed a follow list; you pick the drivers in the sheet it opens. It is there now whether you follow anybody or not.
- •And the driver sheet said "no driver matches that" over an empty search box, which blames a search nobody typed. It now says which nothing it means: no drivers on the board for that scope, or none of the people you follow being in this particular field — and in that case offers a way back to the full list instead of leaving you stuck behind the filter.
The training form, read in one glance
- •Open a driver on a race who has not run yet and the card leads with their training form. Two trainings were costing four stacked blocks — a heading, a card, another heading, another card — to show two numbers. Each training is now one row with its own name on it, the way the runs of a single session have always been listed.
- •The note that the expected time is an estimate from training has moved down to sit against that time, which is the thing it describes. At the top it looked like a caption on the training times themselves.
A car that was never on the hill
- •When a timing feed publishes no start signal at all, the app works out who is climbing from the running order: the next driver who has not finished, after the last one who has, must be the car on the hill. That reasoning needs the racing to have started — and it was never told so. At Buzet on Sunday the bridge came up at two in the morning for a nine o’clock race, found nobody had finished yet, concluded that the first driver in the running order was therefore on the hill, and left her there for seven hours. Since a car on the hill means a session is running, the race was marked live in the middle of the night and everyone following it was notified.
- •The projection now waits for proof. A finisher is proof. Failing that, the timetable is: once the session’s own scheduled start has arrived, the first car really is climbing and it is shown as normal. Before that, nothing is claimed.
Results where the race is, not only where the timing is
- •An event page listed its sessions and gave you no way to open the weekend as a classification: the combined training and race results appeared there only once the whole event was marked finished. So on the Saturday evening of a two-day race — both trainings run and complete — the page showed four sessions and nothing else, while the live board had been offering Rezultati treninga in its session menu the entire time. They are on the event page now, and they appear the moment they can actually answer: the training results once two trainings exist and one has run, the race results once a heat is under way. A rally shows its overall standings there instead, the same name the live board gives it.
The drivers you follow stay yours
- •Following a driver has always meant following the person, but the My Drivers screen did not behave that way: it showed whichever race was running and quietly dropped anyone not entered in it, while the count above the list kept counting them and their alerts kept arriving. The list is now simply the people you follow. No race is chosen for you, nobody disappears between events, and a driver who is not in the current race says so instead of vanishing.
- •The same screen got its furniture sorted. The head-to-head comparison has its own block that says what it is for, and opens with nobody picked — choosing the pair is what that screen is for. The list has a heading with Add beside it, and the star is explained once rather than guessed at. "Out" now appears only while a session is actually running: outside one it described a single run rather than the driver, so somebody who sat out the second training now shows their first training time instead of a dash.
- •On the training results card the runs were being printed twice — once under each training, then again under a heading that named no session, with both of them called "Run 1". That second copy is gone. The progress line underneath compared the best training against itself and reported a flat +0.000 for everyone; it now compares the second training against the first, which is the number it was always meant to be.
- •And in the Spectator view the app points at the view switcher once, briefly, and never again once you have seen it — the sector times are one tap away and most people never found the icon.
Every feature now says whether it is used
- •The previous release covered nine moments. This one finishes the job: eighteen more, chosen so that nothing you can do in the app is invisible any more. The track map and whether anyone switches to it. The appearance you picked — dark, light or follow the system. Simple, advanced or engineer view. Focus mode. Each filter row, and the Clear button. "Only my drivers". Opening a driver card, and whether it came from a row, the side panel or a tap on a car on the map. Starting a search. The colour legend. Start lists. Dismissing a race-control bulletin. Turning notifications on or off, and whether the browser refused. The QR dialog. Unlocking an event with a code. The standings selectors. Pull-to-refresh. And, for crews, saving a track in the builder.
- •Nothing here records WHAT you chose, only THAT you chose. The filter reports "someone filtered by group", never which group — on a small field a class is close to naming a handful of people. The search reports that a search began and never a single character of it, because what people type there is somebody's name. No page got an event of its own, since visiting a page was already counted.
- •Still off unless you accept analytics in the consent banner, still nothing at all on the client-branded versions of the app, and the whole vocabulary is now fixed in one file with tests that refuse an event nobody fires and a screen that tries to invent its own.
Knowing which parts of Live people actually use
- •Analytics have been switched on here since the spring, and until now they recorded exactly one thing: which page was open. Not which session you were watching — live timing is a single page with the session changing underneath it — and none of the things the app is actually for. So there was no way to tell whether the compare view gets opened, whether a shared result card ever leads anyone back, or whether the language row added for the European rounds is being found.
- •Nine moments now report themselves: the session being watched, arriving on a link from a notification or a shared card, following a driver or an event, opening the share sheet and sending a card, comparing two or more drivers, installing the app, switching language, and signing in.
- •What is recorded is the action and nothing else — that a driver was followed, never which driver; that a comparison had three people in it, never who. Still off unless you accept analytics in the consent banner, and still nothing at all on the client-branded versions of the app, which ship no analytics.
Fixing a page that would not load
- •The previous release broke the live timing and event pages for anyone opening them from a shared link — they failed to load at all. Fixed within minutes. Sorry.
The drivers you follow are yours, not this browser's
- •THE DRIVERS YOU FOLLOW WERE MISSING FROM EVERYWHERE BUT THE NOTIFICATIONS. Following a driver saved it in two places — on your account, which is what the push goes to, and on the device you tapped it on — and only the device half was ever read back. So a driver followed in the app, on a phone, or in a browser whose data had since been cleared showed up nowhere: no star in the standings, nothing under "only my drivers" in live timing, an empty Following page, and nobody in the compare picker — while the notifications for that same driver kept arriving.
- •Your account's follows now load in wherever you open the app. Anything you pinned on this device stays pinned, including drivers you followed while signed out.
A session starts when a car does
- •A race is now announced when a car is actually on the hill, or when the first time lands — never because a start list exists. That list reads exactly the same the evening before as it does on the morning, which is how two of tomorrow's races came to be announced and "finished" tonight without a single car running.
- •And a session nobody has driven can no longer end by itself. An empty race is one that has not happened yet; only a person can decide it is over.
A start list is not a start
- •THREE NOTIFICATIONS WENT OUT THIS EVENING FOR RACES NOBODY HAD DRIVEN. The timekeeper published tomorrow's start lists for Buzet, and that was all it took: Vožnja 1 was announced as live at 17:41, closed five minutes later as though it had finished — results and all — and Vožnja 2 announced right after. Not one car had been on the hill. Sorry for the buzzing.
- •A start list says who is entered, not that anyone has gone. From now on it can only start a session close to that session's own scheduled time; outside that, the app waits for a car actually on track or a time on the board. A session genuinely running early is still announced the moment a car goes up, so nothing real gets missed.
A link to a session opens that session
- •EVERY LINK THAT NAMED A SESSION WAS OPENING A DIFFERENT ONE. Tap a session in the sidebar, open Rezultati treninga, follow a link someone shared — and the app quietly went to whatever the schedule said was next instead. At Buzet today, with both trainings done, that meant tomorrow morning's empty start list, whichever link you took. The session you asked for is the one that opens now.
- •This is why the training results looked missing: the aggregate was there the whole time, in the session menu, with every time in it — but the links to it landed somewhere else.
One purple per driver card
- •Leading a session also painted that run's time purple in the driver's card, so a slower second practice could sit in the same colour as the faster first one directly above it. Purple in a card means one thing now — the driver's own best of the runs shown — and the SB chip beside the time still says he led the session.
The driver card shows the session you are watching
- •OPEN A DRIVER MID-SESSION AND HIS CURRENT RUN WAS SOMETIMES MISSING. The row showed his time; the card under it showed the previous session and nothing else. A run that arrives while you are watching reaches the row by itself, but the card reads a list that is only rebuilt when the whole page refreshes — so a driver who had just come down the hill had a card that had never heard of it. The current session is always in the card now, and a run that arrives live joins it straight away.
- •A DRIVER'S CARD STACKS HIS SESSIONS, AND THE COLOURS NOW READ ACROSS THEM. Purple marks the quickest sector anyone set in a session — right in the table, where you are looking at one session. In the card, where Training 1 sits directly above Training 2, it was still saying that, so a slower Training 2 sector could be painted purple while the driver's own faster time from Training 1 sat below it in green. The card now gives the purple to the driver's own quickest, which is the question it was asking all along. Whether a run was the session's best is still marked, by the badge on the run.
The start line names the cars that are actually next
- •"AT START" NOW SAYS WHO IS NEXT, EVEN WHEN THE TIMEKEEPER DOES NOT. Sport-Timing does not publish a live queue at the line — it serves a fixed list that has nothing to do with who is about to go — so with the wrong names refused the banner simply sat empty, while the start list on the same screen knew exactly who was up. It names them now: the next few in start order who have not run and are not on the hill.
- •It waits for the session to genuinely begin before saying anything. Naming cars at the line is what marks a session live and notifies everyone following it, so a queue worked out in advance would announce a session nobody had started — which is precisely what happened earlier today. Until a car has actually been on the hill, the line stays quiet.
- •A timekeeper who does publish a real queue is still believed first; this only fills the silence.
The driver card, with room to breathe
- •THE DRIVER CARD IS ONE CALM READ. Placings and the time now sit together in one card. The run list lines its sectors up in columns, so you can compare S1 with S1 from one run to the next by eye. Progress, gaps and average speed share one card with hairlines between them instead of three boxes stacked on top of each other. Same information as before — on the phone and in the desktop panel alike, now laid out the same way on both.
- •A CLASS LEADER NOW SAYS SO. The gap row for the class you lead reads "Leader" instead of an empty cell next to a dash. The live session in the run list is titled "This session" rather than a bare red "current" chip with nothing before it, and session names follow your language.
A race shows no start order until the organiser publishes one
- •THE PRACTICE ORDER WAS STANDING IN FOR A RACE GRID THAT DOES NOT EXIST YET. Where a race had no published start list, we filled the gap with the order from practice — on the reasoning that the evening before, the practice list is often the only one out. But a start list is a document the organiser issues, and showing one they have not is how a driver plans his morning around a slot that was never his. A race now shows the entry list and claims no order at all until the real grid arrives, which replaces it the moment it is imported.
Only the cars actually at the start line are shown there
- •TEN DRIVERS WERE SHOWN AT THE START OF A SESSION THAT HAD NOT BEGUN. The timekeeper's start-line list is not, it turns out, the queue at the line: on the very first reading of the second practice — no car run, no car on the hill — it already named ten drivers whose start slots were near the very END of the session, while the car due to go first was number one on the list. They had sat in that same list through the whole of the first practice too.
- •WORSE, IT ANNOUNCED THE SESSION. A session goes live on the first car at the line or on the hill, and going live notifies everyone following the event — so six people were told the second practice had started while the hill was empty. It cannot do that any more: a car is only at the start if our own start list, the organiser's document, puts it near the front of the queue still to run.
- •A driver whose whole group has already run is taken off the line too. The latest anyone can be let out is the end of their own group, so once the field is into the next one that car did not start. Nothing is claimed about them — no time, no result, no DNS; we simply stop saying they are standing somewhere they are not.
Buzet's card is Buzet's hill
- •THE CARD NOW DRAWS THE HILL YOU DROVE. When an event's course carries an elevation profile, the near ridge on the share card is the road itself: the rim of light traces the climb from the start line at the left to the finish at the right crest — Buzet's 50 m to 300 m over 5 001 m, steps and all. The post, the story and the transparent story overlay all carry it; the overlay's top edge is the profile too. Events without a profile keep their own seeded silhouette, and the sky still follows the hour of the run: dawn, noon, golden hour, night.
The course is visible, and only cars on it move
- •A CAR STANDING AT THE START NO LONGER DRIVES UP THE HILL. Cars waiting at the line were drawn on the map and given the same speed as a car actually climbing, so they crept up the course on their own — and every reload sent them back to the bottom to do it again. Who is at the line is what the banner above the table says; the map is for cars out on the hill.
- •THE COURSE ITSELF IS DRAWN PROPERLY. It was a grey line on a dark green hillside. It now has a casing under it and a bright route on top, the way a road is drawn on a map, so it reads on the satellite view and on the street view alike.
- •Buzet's course is on the map.
One car stuck at the start no longer holds up a whole group
- •A GROUP'S PLACINGS NO LONGER WAIT FOR A CAR THAT NEVER WENT. A placing is only shown once everyone in that group has run — deliberately, so a provisional position is never presented as final. But a driver who is called up, never goes, and is not marked by the timekeeper until much later leaves the whole group hanging: nobody in it gets a placing, and nobody can be given a result card. The latest anyone can be let out is the end of their own group, so once the field is into the next one that car did not start, and the group closes without it. Nothing is claimed about the car itself — no time, no result, no DNS — and the timekeeper's own decision lands exactly as it always would.
- •A CAR ON THE HILL SHOWS ITS RUNNING TIME ON ITS OWN ROW. The banner at the top has always shown it; the driver's row showed a dash until they finished. Same clock, counting from when they actually left the line, so a page opened mid-run joins it where the car is.
- •The event's course is drawn on the track map for Buzet.
A car that finishes in front of you keeps all three splits
- •THE THIRD SPLIT ARRIVED ONLY IF YOU RELOADED. Watch a car cross the line and it kept the two splits it had shown on the way up and never gained its last one; open the page fresh and all three were there. The live update carries the splits of a finished run, and the code that reads that update simply never looked at them — so the splits were thrown away the moment they arrived, every time, for every provider. Nothing was ever missing from the results themselves.
Who is on the start line, and how their run is going
- •TEN DRIVERS WERE SHOWN "NA STARTU" FOR OVER AN HOUR. The timekeeper's start-line list is published per heat, and when a heat's grid was never filled in their system serves a fixed leftover set instead — the same ten names in every single reading. At Buzet's first practice that was 152 readings over 78 minutes, unchanged, while the field ran past them. We now notice: a real queue empties as cars go, so if cars keep finishing and not one name has left the list, the list is not a queue and we stop showing it. The waiting list below was always right; this was only the line itself.
- •A CAR ON THE HILL SHOWS ITS SPLIT TIMES AS IT CROSSES THEM. Checked against the official times afterwards, to the thousandth.
- •And a stale name can now disappear on its own. Until now anything written to the live banner stayed there until something replaced it, so a leftover from an earlier session could survive a restart with nothing able to clear it.
No more banner asking about the language you are already reading
- •THE LANGUAGE BANNER IS GONE. It asked whether you wanted the page in the language you had just switched away from, every time, in both directions — it read your saved language a moment before that setting caught up, so the only thing it could ever offer was the one you had just left. The language row at the foot of the page is how you switch, and unlike the banner it works the first time you arrive too.
- •Under the hood, the start list is now put in order by its own start-order column instead of relying on the database handing it back in the right order by coincidence. Nothing moves on screen today — at Buzet the published order happens to run from the highest car number down, which is exactly what the old fallback produced — but a list that does not follow that pattern will now still read correctly.
Split times, on the way up and at the finish
- •FINISHERS HAVE THEIR SECTOR TIMES BACK. A car crossed the line, took its place in the table — and showed no splits at all, on every session, for every provider. The times were in the database the whole time; the live feed was sending the NUMBER of runs a driver had instead of the runs themselves, so the page had nothing to read them out of. It sends the runs now.
- •A CAR STILL ON THE HILL SHOWS HOW ITS RUN IS GOING. Sport-Timing publishes each split as a car crosses it, and we were throwing that away and waiting for the finish. The splits now appear as they happen, so you can see someone is up on the first sector before they reach the top.
- •Those live splits are individual sector times, not the running clock — the same numbers a finished run shows, so a car mid-climb and a car already home can be read the same way.
Comparing drivers is one table now
- •SECTORS AND SESSIONS FINALLY LINE UP. They were two separate cards with two sets of driver columns that scrolled independently and never sat under each other. One table now, one header, one set of columns — so a column is a column all the way down.
- •ON A PHONE, THE DRIVER YOU ARE MEASURING AGAINST STAYS PUT. Swipe sideways and the reference column used to slide under the labels, leaving half a time showing. It is pinned now, and the sessions are labelled T1, T2, R1, R2 so the column stays narrow enough to make room.
- •SECTORS SHOW WHAT EVERYONE ACTUALLY DROVE. A gap on its own says a driver is seven tenths off and nothing about their time. Both are there now, the same way the session rows always did it.
- •THE BEST ROW AT THE BOTTOM IS GONE, AND A COLOUR SAYS IT INSTEAD. Green marks a driver's best of the weekend where they set it, white is an ordinary time, red is what you are losing. No purple here — this is a weekend across a few drivers, not one session with one crown.
- •A PENALISED RUN IS NO LONGER SOMEONE'S BEST. The weekend headline read the raw time and ignored penalties, so a lap that had been given ten seconds for a jump start could sit on top as a driver's best, above a session row crediting them with something slower. Best now means what you were credited with — and a disqualified run counts for nothing.
- •Event pages no longer show a bare number of entries next to a person icon; the start list below says it properly, and says who is actually starting.
- •The tab icon is the real one, not the leftover from the site's first day.
Shared links finally show a picture
- •PASTE A LINK IN A GROUP CHAT AND IT LOOKS LIKE SOMETHING. Until now every link to the live timing previewed as bare text — no image, just a title — which is exactly how this gets passed around on a race weekend. It now carries a proper card: the mark, HILLCLIMB WORLD, LIVE TIMING, and the address.
- •IT IS THE SAME PICTURE THE RESULT CARDS ARE MADE OF. Same night mountain, same ridge lit in red along its crest, same grain — so a link someone shares and a result a driver posts look like they come from the same place. Race pages keep showing the organiser's own poster; this is for everything else.
- •Every branded version gets its own, in its own colour, with its own name and address.
You only hear about an update when it actually matters
- •THE NOTICE IS BACK, BUT ALMOST NEVER. The old one appeared after every single deploy, including a fixed typo, which made it noise you learned to swipe away — and it turned up during a live run, which is the one moment nothing should be asking you anything. It is now silent unless a release is deliberately marked as one people need.
- •BECAUSE A REFRESH ALREADY DOES THE WORK. Pull to refresh and you are on the new version, no button required — the app never serves you a stale page, and every release ships its own files. So for an ordinary update there is simply nothing worth telling you, and it tells you nothing.
- •WHEN IT DOES SPEAK, IT MEANS IT. A wrong time on screen, a crash, a broken result — that is what earns the notice. It floats above the tab bar, never moves the timing underneath, and closing it is remembered: that release will not ask twice, while the next important one still gets through.
The app never interrupts you to update
- •THE UPDATE BANNER IS GONE. Not moved again — removed. It had been built twice, at the top of the page and then floating at the bottom, and the position was never the problem: on a race weekend this app is on a phone clipped to a pit wall with a car on track, and there is no good place to put a box that asks you to reload.
- •YOU STILL GET THE NEW VERSION. A new build is picked up the next time you open the app fresh — every tab closed, then reopened. That is exactly where the old "Later" button already left you; all that is gone is being asked.
- •And nothing reloads the page by itself, ever. There is no longer any code that could.
The compare picker reads as a calendar again
- •IT IS GROUPED BY SEASON NOW. The event list had grown to a flat run of every weekend we have timed, so finding last year's race meant scrolling past this year's. Each year is its own heading, newest first — you pick the season, then the race.
- •AND THE NAMES ARE THE RACE, NOT THE POSTER. Every row used to open with an edition number and close with a year, with the title sponsor wedged in the middle: "32nd GHD ‘I feel Slovenia’ Ilirska Bistrica 2026". Eight of those read as one repeated string with the place name buried inside it. The edition, the sponsor and the year are gone from the picker — the year is the heading above it — so the rows now say GHD Ilirska Bistrica, Nagrada Grada Skradina, Kotor Trojica.
- •Nothing is renamed, only shortened. A marker that actually means something, like (arhiva), stays; and the heading above the comparison still carries the full official name the organiser printed.
The new-event notification now offers to follow the race, in one tap
- •TELLING YOU A RACE EXISTS IS ONLY HALF OF IT. Everything that makes a race weekend useful — "Trening 1 is LIVE", the hour-before reminder, the bulletins — goes to people FOLLOWING that event. A notice that just said "there is a race" left you no better off than before it arrived.
- •SO IT ASKS. The notification now reads "follow for session alerts" and carries two buttons: Follow, which opens the event already opting you in, and Details, which just opens it. The follow runs through exactly the same path as tapping the button by hand, so the push permission prompt and its messages behave identically.
- •It can only ever opt you IN. The one-tap follow fires at most once per visit and only if you are not already following — so re-opening the notification later can never quietly toggle you back off, which would have made the invitation worse than no invitation at all.
- •And it stays one notice per race. Not per session, not repeated, not re-sent if you ignore it.
The "new events" notification you could switch on now actually arrives
- •IF YOU HAD "NEW EVENTS PUBLISHED" TURNED ON, IT NEVER SENT ANYTHING. The setting has been on the notifications page — and on by default — since preferences shipped, and no code anywhere sent that notification. Everyone was opted in to something that could not arrive. It works now: when an event is published you get one notice, with the venue and the date, and a tap takes you to it.
- •IT IS THE ONE EVENT NOTIFICATION THAT CANNOT FOLLOW A FOLLOW. Every other one reaches the people following that event — but a brand-new event has nobody following it yet, which is exactly why this one had no way to send. It now goes out to everyone who has not switched it off, quiet hours included.
- •WHICH MAKES SENDING IT TWICE THE THING TO FEAR: a repeated reminder bothers one event's followers, a repeated broadcast bothers everybody. So the event is marked as announced BEFORE the notice goes out, never after — losing one notice is recoverable, sending it every half hour forever is not — and every event that already existed was marked as announced when this shipped, so switching it on did not announce a back catalogue.
- •REMINDER TIMING IS NOW A REAL SETTING. "1 day", "1 hour" or "both" was already being stored — and read by nothing, so everybody got both regardless. It is honoured now, and you can actually choose it: the control sits under the reminder toggle, in all five languages. The default is "both", which is what everyone was already receiving, so nothing gets quieter unless you ask it to.
- •AND THREE SWITCHES THAT PROMISED NOTHING ARE GONE. Red-flag alerts, event results and issued-penalty alerts were all settings for notifications the app never sends — red flags do not exist here at all, results are covered by the session-completed alert, and penalties already reach you through your followed drivers. Rather than leave three switches that do nothing, they are off the page until there is something behind them.
A ceiling on how fast anyone can pull the live feed
- •The public read side of the app — the timing feed, the classification, the event list, the results — had no ceiling at all. A limit had been written and documented long ago, but nothing ever called it, so it protected nothing. Anyone could pull the live feed as fast as they liked, and the developer docs hand every visitor a console pointed straight at it.
- •Deliberately set high, and this is the important part: spectators on a hill are all on the same mast, so hundreds of phones arrive from a single address. Measured at Ilirska, thirty people watching at once is around three hundred requests a minute of entirely normal traffic. The old written-down limit would have started turning real people away mid-race. The ceiling is now far above any crowd, and catches what it is actually for — something pulling in a loop.
- •Release notes no longer chase search traffic: they are for people already in the app, reached from your profile, and in a search result they would only compete with the pages someone actually came for — an event, a startlist, a result. The sitemap stops advertising them to match.
- •It can never be the reason a race stops. Every way it could fail — cache down, a bad response, an outright crash inside it — lets the request through instead of blocking it.
A timing partner can take back a time that should never have been there
- •When we read a partner's results ourselves, a wrong entry cleans itself up — we re-read their screen a moment later and it is gone. When they send results to us, it does not: correcting a time always worked (send it again), but a time sent to the wrong session, or under the wrong run number, had nothing to correct and simply stayed. Now it can be removed.
- •Deliberately awkward to do by accident. It is refused outright if the time carries a penalty, because the penalty would quietly go with it — you have to say so explicitly. There is a rehearsal mode that tells you exactly what would disappear and changes nothing. Every deletion is recorded, and the classification updates for everyone watching straight away rather than at the next time.
- •Removing a time is for the record that has no correct version. Fixing one is still just sending it again.
A timing partner can finally tell us a car is on its way up
- •Until now a partner who sends us results could only ever report a car that had FINISHED. So the "on the hill" banner, its running clock and the moving car markers on the track map — all of which you already have — worked only for events whose timing we read ourselves. Anyone building their own system against us was locked out of them. Now they can say a car is at the line, and that a car is away.
- •A car going out is the session starting. The first car away flips the session live on its own, exactly as the first recorded time does — there is no separate "open the session" step for anyone to forget. A car merely waiting at the line does not: start orders get published long before anybody drives.
- •If they tell us WHEN the car left, the clock counts from that moment rather than from whenever the message reached us. Repeating the message never restarts a clock that is already running — a car halfway up stays halfway up instead of jumping back to the start line, which is a mistake this app has made before.
- •And once a car is out there, its split times can arrive while it is still climbing, so it can be ranked on sectors before it has any total time at all.
- •Found by building the demo: we pushed real positions for a car and watched the map draw nothing.
- •The Zero-to-race guide gains the step, with a real curl: a capability nobody outside this codebase is told about is one nobody uses.
- •And a display fix the demo made visible: a car out on the hill, listed between two cars still waiting, split the waiting block in two and printed the "waiting for start" heading twice — with the full count on both halves, as if there were twice as many cars to come.
The API documentation shows you the race, not a picture of it
- •The developer docs gain a Live preview: the demo event's race replayed through the SAME timing table the live page draws, one frame per real API call, with the call that produced it printed above the table. Watch a car cross the line and the row appear; watch a +10s penalty fold into a time and the order change. Because it is the shipped component fed with captured classifications — not a drawing — it cannot quietly drift away from what the app actually looks like. It plays, pauses and scrubs, holds still for anyone who prefers reduced motion, and the real fully interactive event is one link away.
- •The preview table is deliberately display-only. A row's follow action is wired to the reader's own account — it pins a favourite, records the follow on their account and can raise the push-permission prompt — and none of that may fire from a documentation page onto a fictional demo driver.
- •A permanent demo event now backs the docs, and it is built ENTIRELY over the public REST API: entries, a withdrawal, a bulletin, startlists, times with sector splits, a DNF, a penalty and the session close — 36 calls, zero dashboard actions. So the curl in the docs and the row on screen have the same origin, and the demo is itself the proof the API works. It is unlisted and marked as a test event, so it never appears beside real events and can never consume a licence credit.
- •The demo also carries a generated hillclimb course — switchbacks, three sectors — so the docs render the real track map component too, not just the table. Pushing it turned up something worth knowing: a provider who SENDS us results cannot mark a car as being on the hill. Positions are accepted, but the map only places a car once its status says it is on track, and that status can currently only come from a feed we read ourselves. So the on-track banner and the moving car markers are, today, reachable only by providers whose feed we poll.
- •Hiding the event was not enough to hide the demo. A championship had no visibility of its own and an event's championship is required, so an unlisted event dragged its championship into three PUBLIC places: the championships API, the standings page and the events-page filter. Championships can now be unlisted too, and the public catalog excludes them.
Everyone watching a session sees the same cars on track
- •Who is on the hill is now read straight from the session, never through your filters. Two phones watching the same run could disagree about what was happening: with the "Mine" filter on, a car nobody in your list was driving disappeared from the banner completely, and the banner's own counter said two cars were out there while six were. Filters narrow the table; they do not narrow the track.
- •The "Mine" chip turned invisible when you switched it on — it was painted with a colour this app does not define, so it lost its fill and left white text on a white page. It is now the same crimson as every other active filter, and follows the brand colour on white-label instances.
- •Filtering to drivers who are not in the session on screen left the table cycling loading placeholders for ever instead of saying there was nothing to show. The check for "is anything filtering this list" had been written out filter by filter and the favourites chip was never added to it.
The on-track banner tells you how long a car has been out there
- •When a run is stopped, the timekeeper's feed has no way to say so — it simply keeps reporting the held cars as running, and we reported it back. At Ilirska one car sat on the banner for ten and a half minutes on a climb where the slowest run all day was 4:32, and the page still read as though a race was on.
- •The banner now prints how long the car has been on the hill, and turns the clock red once that passes what any run here has actually taken. Nobody is hidden — a car held on the mountain is real, and a reader can now see for themselves that it has stopped rather than being told it is racing.
- •The threshold comes from the event itself: half again the slowest completed run, never under six minutes. A rally stage that genuinely runs ten minutes will not go red.
A reloaded track map no longer sends cars back to the bottom of the hill
- •Every car keeps the moment it left the start line for as long as it is on the hill. It used to lose it the instant it crossed its first split — the sector update rewrote the whole banner entry and left the start time out — so reloading the page mid-run put most of the field back at the bottom of the climb and walked them up again. At Ilirska's first race that was five of the seven cars out there.
The fastest sector goes purple even when the car is still climbing
- •Purple marked the wrong driver. A car still on the hill has no finished run, so its splits sat outside the comparison entirely — and on the final order of Ilirska's first race the three quickest cars were still on live splits, so 'fastest on screen' was picked from whoever was left. A 0:33.170 first sector glowed while a 0:30.979 sat two rows above it in amber. Live splits now count: they take a colour, and they take purple off the row that was holding it.
- •Open a driver during a race on your phone and you get their training runs and every sector of them, not just the race. The comparison underneath already said 'nine seconds better than training' — now the time it is talking about is on the same screen. The desktop panel always did this; the phone never had.
- •A driver who has crossed the line but whose splits have not landed yet showed their time at the top of the row and a bare dash under it, which read as though we had lost something. It now shows the time and the sectors we do have.
The compare table reads as one column again
- •The crimson outline around the driver you are measuring against was cut into segments: the 'best in group' strip under each sector was a grid of its own and carried no border, so the line stopped at every sector and never closed at the bottom. The strip is gone and the outline now runs unbroken from the header to the last sector.
- •That benchmark moved to where it is actually read — under the reference driver's own sector time. When he holds the group best himself the label stands alone instead of repeating his number back at him.
- •The car number was the loudest thing in the column header and the driver's name the quietest. Swapped: the name leads, the number sits under it.
- •The METRIC heading over the label column was naming something already obvious from the rows beneath it. Removed visually, kept for screen readers.
The last few English words on the event pages
- •The QR buttons on the events pages decided between Croatian and English and nothing else, so Slovenian, German and Italian readers got English next to their own translated page. All four now speak the language you are reading.
- •Dates on the changelog fell back to a British format for three of the five languages, although the app already knows the right one for each.
- •A screen reader announcing a filter button read the translated word followed by the English 'filter' — 'Klasa filter'. The button now announces its own label, and the group around it says what those buttons are for, translated.
Croatian stopped leaking into the other four languages
- •THE PUSH THAT TELLS YOU YOUR DRIVER IS ON TRACK WAS HALF CROATIAN. The title was in English and the body was not, so every follower of every driver on every timing system got 'Ivan Horvat — Trening 1 / #17 · Na stazi!'. The body now matches its title.
- •THE OFFLINE PAGE WAS CROATIAN FOR EVERYONE. It looked for a cookie the app stopped writing long ago, so the check never matched and the fallback took over — which meant a Slovenian, Austrian or Italian reader who lost signal on the hill got a Croatian page. It now reads the cookie the app actually writes, speaks all five languages, and falls back to English rather than Croatian.
- •THE COUNTDOWN SAID 'sek'. Hours and minutes were neutral, seconds were not; it now sits with them.
- •THE CONNECTION PILL SAID 'Spreman' IN EVERY LANGUAGE — the one state out of seven that never went through the translations, and the one that shows by default on events, standings and following.
- •A SHARED RESULT NOW NAMES THE CLASS THE WAY THE TABLE DOES. The card drew the class straight from the timekeeping data, so a row reading 'Gruppe 4' produced a card saying 'Grupa 4' — the app contradicting itself in the one thing a driver actually posts. Long class names are shortened on the card too, instead of overflowing their pill. The podium block on the event page had the same split: the winners' line was translated and the podium cards beside it were not.
- •A screen reader announcing the on-track dot read out the name of a missing translation key, in all five languages. It was a typo — one character.
See who you follow, and when they are due to start
- •A DRIVER YOU FOLLOW NOW CARRIES A STAR IN THE LIST. Until now the mark existed only inside the swipe panel and the expanded card, so a list of 221 looked the same whether you followed somebody or nobody — you had to remember. A small red star now sits next to the name on the closed row.
- •A DRIVER WHO HAS NOT RUN YET SHOWS THEIR PLACE IN THE RUNNING ORDER. That column used to hold a clock and nothing else, which answered whether they had run but never when they were due. It now reads the running order — 12. — so the distance to your driver is on the row instead of somewhere you have to work out. The race order is used when it exists, the training order otherwise, and the clock stays for anyone whose order is not known yet.
Your drivers in one tap, and championship names that fit
- •FOLLOWING A DRIVER NOW CHANGES THE LIVE SCREEN. It did not before: you could follow someone and the table of 221 looked exactly as it had, with a driver who has not run yet sitting below every retirement. A 'Mine' button now sits first in the filter row and cuts the table to the people you follow. It appears only if you follow somebody, it counts toward 'Clear filters' so there is always a way back, and it does not survive a reload — on a race morning the whole field is the question you start with.
- •CHAMPIONSHIP NAMES ARE SHORT, AND IN YOUR LANGUAGE. They come from the timekeeping data, where they exist only in Croatian and run to forty or fifty characters, so the English site said 'Prvenstvo Hrvatske u brdskim auto utrkama' and crossing five filter chips took several swipes. They now read 'Croatia', 'FIA EHC', 'Slovenia — Historic' and so on, translated into all five languages, on both the filters and the standings page. A championship we have not named yet still shows its full name rather than breaking.
Find your driver by name, and read the page in your own language
- •SEARCH NOW MATCHES THE WAY PEOPLE TYPE. A phone keyboard gives you 'c', not 'ć', so searching a field of 221 for 'Peric' found nothing and the honest conclusion was that the driver was not entered. Accents are now folded on both sides — including the letters that do not come apart on their own, where 'Duric' has to reach 'Đurić' and 'Weiss' has to reach 'Weiß'. Typing a full name works too: first and last were previously tested one at a time, so 'petr trnka' matched neither field and returned an empty list. Either order is fine.
- •THE LANGUAGE PICKER IS NOW ON THE PAGE. Five catalogues ship with the app, and until now the only way to reach them was Profile → Language — a subpage behind an account icon. Someone arriving from Austria or Slovenia had no way of knowing the site spoke their language. There is now a language row at the bottom of the live and event pages; it keeps you on the page you are reading and remembers the choice.
- •The 'on the start line' banner was hardcoded in Croatian while everything around it was translated, so German and Italian readers met one Croatian phrase in the middle of their own page. It uses the translation that already existed in all five languages.
- •Analytics cookies now genuinely wait for consent. The privacy policy promises they are set only after you opt in; the analytics library was suppressing the sending of events but still writing its identifier at page load, including for people who chose Reject all. Storage is the part the rule is about, so storage now waits too.
The position column shows the standing you filtered to
- •Narrowing to a championship AND a group left the list numbered by championship — 10, 11, 20, 28 … over a list that IS that group's standing. The column now counts the narrowest thing you picked, so a group you filtered reads 1, 2, 3. Filtering only a championship still gives your place in it, and a driver's own card carries both numbers side by side.
The sector times under a result are the sector times OF that result
- •In the training results — where each driver is shown on their best run of the weekend — the sector times underneath belonged to a different run. A driver could show his quick second-training total with his slow first-training splits under it. Three of six drivers on one screen were affected; the other three only looked right because their best happened to be their first run.
- •It also explains a question about the colours: a sector taken from a run that is not your best can never BE your best, so every one of them showed as “slower than your own”. With the right run on the row, green means what it says again.
The class on your card is the class on your row
- •A driver can be in one group on the entry list and another in a particular championship. The timing row already showed the right one when you filtered to that championship — but opening the driver, and the shareable card, still showed the entry-list group. Tapping a row marked Grupa 3 opened a card headed Grupa 4. Both now follow the row, in the same colour, including the text that goes out with the image.
- •For organisers: the tracking screen stops presenting an old answer as the current one. A phone that has gone quiet kept showing the last instruction it was given — a confident green “armed” for a device silent for four minutes — with only the small status dot disagreeing. A stale reading is now dimmed, struck through, and labelled with how old it is.
Overall means your place in the championship, not among the rows on screen
- •Filtering to a championship AND a group made “overall” and “in class” print the same number — a driver read P4 and P4, which says nothing. The championship you filter now decides who you are ranked against, and a group or class filter only decides which of those drivers you are looking at. So overall is your place among everyone in that championship, in class is your place in your class there, and the two can differ the way they should.
- •Sector times stop vanishing the moment a driver crosses the line. A driver would come through the finish with two sector times showing and a moment later have none at all — a time on the row and three blanks under it. They were never lost: the timekeeper sends the total on one sweep and the sector times on a later one, and we were deleting the ones we already had while waiting for the same numbers to come back. They now stay until the finished run brings its own, and step aside the instant it does.
Open a driver’s card and the positions match the list you were reading
- •A driver sitting first in a filtered list opened his own details and found a completely different pair of numbers — P38 overall, P6 in class — because the panel was reading the unfiltered field while the table beside it showed the filtered one. The share card launched from that panel printed those numbers too. The list, the card and the panel now all count the same way: the standings of the view you are actually looking at.
A reload no longer sends half the hill back to the start line
- •Cars without a phone sharing their position — nearly all of them — were placed on the track map by how long the run should take, counted from the moment YOUR page opened. So every refresh restarted them at the bottom and marched them up the hill again. The timekeeper’s feed already says when a car went out; that time is now recorded and sent, so a page opened mid-run puts each driver where they actually are, and a reload changes nothing.
- •For a driver who IS sharing GPS, the map now follows every position instead of only the first. Until now a fix placed the marker as the car left the line and every metre after that was guessed — one driver at Ilirska sent 128 usable positions up the hill and the map used one of them. The marker is eased onto each new fix rather than snapped, so it stays smooth.
- •Positions on a share card now match the filter you are looking at. Filtering to a championship renumbered the overall position but collapsed “in class” and “in group” onto that same number, so a driver lying 3rd in the championship could read 3rd in class whatever his class was. Class and group are now counted properly within what you filtered — and against the group that championship puts him in.
- •The Performance Factor badge reads PF 120 instead of PF 120.000. It is a whole number and always was.
The map stops calling a real GPS fix a guess
- •When a driver is sharing their position from their own phone, the map draws where the car ACTUALLY is — but the note across the top still read “Estimated positions — not GPS”, because it appeared whenever anybody was on track, whatever the markers were made of. So the one thing on the map that was real got labelled a guess. It now says how many cars are on live GPS, and only claims everything is estimated when it is.
- •Sector times that have not arrived yet no longer look like sector times we lost. A timekeeper can publish a driver’s total a sweep or two before their splits; in Compare that gap printed the same blank dash as a driver with no splits at all. It now shows a distinct “still coming” mark, and only where the comparison plainly has splits elsewhere — a session with no sector timing still just shows a dash.
A car that stopped no longer looks like a car still running
- •A driver who retired — DNF, or excluded — stayed on the track map for the rest of the session, sitting where the estimate had last put them. Anyone looking at the map saw a car partway up the hill that had in fact been out for several minutes, which is the one thing a live map must never say.
- •A retirement now behaves like a finish: it stays long enough to read WHERE the car stopped, which is the whole reason anybody looks, and then it leaves the map.
Filter a championship and the groups are that championship’s groups
- •A car can run for more than one championship, and the championships do not agree on which group it is in — at Ilirska Bistrica #100 is group 4 for Europe and group 3 for Croatia. Filtering to Prvenstvo Hrvatske already showed his Croatian group, but only as a bare number next to rows that read “Group 4”, and he was still listed under Group 4 rather than Group 3.
- •Now the whole row moves with him: the label reads the class in full, in that class’s colour, and picking a group or class shows the drivers who are in it FOR THE CHAMPIONSHIP YOU FILTERED — so a driver appears once, in the right place, and the list you are looking at is the list that scores points.
- •With more than one championship selected nothing is scoped: no single group applies to a car running for two, so the entry list stays the answer.
The map on a phone stops being an either-or
- •Opening the track map on a phone used to take the timing away. The map replaced the table, so standing on a hill you had to choose between "where is my driver" and "what is his time" — and that is not a choice anybody actually wants to make. The map now rises over the table instead of replacing it: the list stays where it was, with the last thing you were reading still on it, and closing the map puts you straight back.
- •It opens to a fixed height rather than a draggable one, and that is deliberate. A sheet you can drag fights the map for the same finger — every pan near the top edge starts closing the sheet instead of moving the map, which feels broken even when nothing is. This one owns its area: it opens, you pan and pinch freely inside it, and it closes from the handle, the X, or the back gesture.
Finished drivers who were missing their sector times have them back
- •Some drivers finished with a time but no sector times in the list, even though opening their row showed all three. The list asked for one particular run and took it even when that run had arrived without its splits. It now shows whichever completed run actually carries them.
Your group is the group of the championship you are looking at
- •A car can run in different groups in different championships — at Ilirska Bistrica #100 is group 4 for Europe and group 3 for Croatia, and the Croatian system has groups Europe does not have at all. The app showed one group everywhere. Filter to a single championship and the class now reads the group that applies there; clear the filter and it goes back to the entry's own.
A car still on the hill no longer looks finished
- •Live sector times arrived this morning, and they made a car that was still driving look like it had a result — sectors used to appear only once someone finished, so seeing them read as done. The splits of a run in progress are now dimmed and trail off, so at a glance you can tell who is still out there from who has crossed the line.
Filter by championship and the positions are that championship
- •Filtering the timing list to one championship hid the other drivers but kept the overall numbers — a driver leading their championship still read P27, with the gap measured to a leader who was not in it, and the share card printed that. Positions and gaps are now the championship you are looking at. Filter to your championship to see where you stand in it; clear the filter to see the whole field again.
The map stops resetting the hill, and the finish line clears itself
- •RELOADING THE PAGE SENT EVERY RUNNING CAR BACK TO THE START LINE. Marino, watching the hill: reload, and a driver halfway up was at the bottom again, climbing a second time. The map was right about where the car was — it just refused to believe itself. A fresh page has no memory of the run, and the code treated that blankness as "this car is at the line", which is true when a car actually leaves the line and false every other time. A live GPS fix already says where the car is; now it wins. Only a car with no fix at all still starts at the bottom, because for those the position is a time-based estimate and an estimate has to begin somewhere.
- •AND FINISHERS PILED UP ON ONE PIXEL. A car that crossed the line stayed on it, so by the end of a run the whole field was stacked on the same dot — unreadable, and it made a live map look frozen. A crossing now shows for five seconds, long enough to read who it was, then clears. A field that had already finished before you opened the page never appears at all: their runs are history, and parading them across the line on every reload was the same lie in a different direction.
Compare works on a training day, and three cars sit in the right class
- •Comparing drivers on a weekend that has only run training offered an empty list. Compare opens on the whole weekend, and the whole weekend was read from the race results — which do not exist until the first heat runs the next day. It now falls back to the training times, so you can compare from the first practice run onwards.
- •Three cars at Ilirska Bistrica were in the wrong class. The entry list put #1 and #12 in prototype classes P1 and P3, but the timekeeper scores both as P2 — and this year's European championship has no P3 at all. #31 was entered as its own "Cross Car" class when the Croatian championship scores the car in class 19, alongside four others.
Profile, sorted into places
- •The Profile tab stopped being one long pile. Who you are sits on top; below it, settings live in groups — and each row shows its current state, so the theme, language and notifications answer at a glance without opening anything.
- •Theme, language and notification preferences each got their own page. Notification preferences used to hide behind a fold-out on the pile; now they are simply there, all of them, on the notifications page.
- •My Drivers on the profile now takes you to the Following tab — the same list, the live one, instead of a second copy of it.
- •If you are reading this in a browser, the profile now offers to install the app — the entry that was oddly missing. Already installed? The row knows to stay away.
- •One account, said honestly: your password, security and the account itself are managed in one place for every HCW app, and the profile links you straight there. What the old 'Delete account' button actually deleted — your HCW Live data — is now exactly what it says on it.
Sector times as they happen, not after the finish
- •Sector times now appear the moment a car crosses each split, while it is still on the hill — so you can see who is provisionally quickest through sector one before anyone has finished. Ilirska Bistrica publishes three splits on a five-kilometre climb, and until now the app showed none of them until a driver reached the line.
- •A driver who has just finished shows their splits straight away. They used to arrive only when something forced the page to refresh — opening the driver row was the usual way to see them.
- •Fixed a car that could sit on the "on track" banner after it was no longer running. Nothing removed a car that left the track without crossing the line, so it stayed there until the session ended.
My Drivers holds its shape, class colours line up, and controls get room to breathe
- •Opening My Drivers showed “No live event right now” for a moment before your actual event appeared — the screen was giving an answer before it had one. It now holds its shape while it loads, so you land straight on your drivers.
- •Ilirska Bistrica wore improvised class colours — prototypes in reds and pinks, groups running purple to cyan, half the historic field in plain grey. Both editions now sit on the same strength spectrum as every other event: violet is prototype pace, red a strong group, blue a mild one, and the historic classes run on their vintage sepia ramp. The FIA prototype ladder P1–P4 steps down from the violet apex, and the Grupa 5a/5b splits sit where their measured performance factor puts them — so a colour reads the same at this hill as at the next.
- •Inputs, dropdowns and buttons across the app grew a step taller — filters, search fields and forms stop pinching, and every control is a comfortable fingertip target on a phone. Options inside dropdown lists picked up extra vertical padding too, so picking a class or an event no longer feels like threading a needle.
Track maps survive CARTO going key-only
- •CARTO flipped its free basemaps to API-key-only and every track map — the dashboard track builder and the fan Track View — woke up on race morning covered in 'API KEY REQUIRED' watermarks. Both maps now load keyless OpenStreetMap tiles from a single source of truth (components/track/basemap.ts): the dark racing look survives as a CSS invert scoped to the basemap tile layer only (track line and driver markers keep their true colors), light theme uses the tiles as-is, OSM attribution shows on full-size maps per their tile policy, and the CSP image allowlist gained tile.openstreetmap.org.
Share cards, rebuilt for race evening
- •The card a driver shares after a run is a different picture. The magenta flood is gone: the mountains sit low on a disciplined stage, the nearest ridge carries a thin rim of light, and every card from one event repeats the same silhouette — a weekend's shares read as a set. A share taken mid-race burns a touch hotter than the final one.
- •The background follows the day. The card reads the hour the run was driven and paints that sky: blue-hour dawn for the early trainings, full blue-and-gold noon, a blazing golden hour, and a dusk of stars and survey lines after dark. Race and Training Results always arrive on the evening card — the day is done. Four skies, one mountain.
- •The card always looks like HCW Live now. A driver's class used to repaint the whole background — a blue class made a purple card. The class colour lives in one soft band of light on the horizon, and in the class badge; the brand's crimson and black hold the card.
- •The position pair stopped stuttering: "P1 · P1" with a small word underneath is now the category label above its own number, sitting on the same line as the big result.
- •The foot grew up: a hairline rule, the stacked HCW LIVE mark on the left and the address on the right. The transparent story overlay follows — its panel now rises into a small ridgeline edge carrying the same rim of light, instead of a flat red bar.
- •Small numbers behave like timing numbers: reference times render in the timing face, run deltas line up in one column like a timing tower, and dimmed text keeps its contrast on every background.
Sectors belong to the driver row, and comparisons measure you against your own field
- •Sector times are part of the driver row now instead of a line underneath it. Tapping anywhere on the row — the name, the time, the sectors — opens that driver, because it was always meant to be one thing.
- •Green sectors are back where they belong: your best of the weekend. Comparing only within one heat meant almost nobody could ever be green, since most drivers take a single run per heat. Amber now means you have been quicker on this hill earlier in the weekend.
- •Search the compare picker by a full first name. The list shows an abbreviated name, and it used to search only that, so typing Kevin found nobody called Kevin. Accents no longer matter either — plese finds Pleše.
- •The sector benchmark follows the drivers you picked. Two cars from the same group are measured against the best in that group, cars from different groups against their shared category, and only a genuinely mixed pick against the whole event. Being measured against a prototype told a Grupa 4 driver nothing.
- •Comparing a whole event now shows each driver's best run rather than their two heats added together, so the headline time matches the sector times under it.
- •The running gap through a run reads as a deficit — a red plus — the same way the gap for each sector does. Slightly larger type throughout the comparison, and the ideal-time row is away until it is presented properly.
Sector times in the timing list — for everyone, and coloured against what you are looking at
- •Sector times now appear under each driver in the list, on the phone and on a desktop alike. They used to be reachable only by switching into the engineer view, which is a dense layout built for a desk — a spectator on the hill wants the sectors just as much. The simple view stays clean.
- •Filter to a group or a class and the colours follow. They were worked out across the whole field, so filtering to Grupa 2 could leave nothing purple at all — the fastest sector belonged to a prototype you had just hidden. Purple now means fastest among the drivers actually on your screen.
- •Green has to earn its place. It means a driver's own best, and on a hill where most drivers take a single run in a session that was true of every sector they set — so nearly every row went green and the colour said nothing. It shows once a driver has more than one timed run in view, where 'my best' is a statement about the driver rather than a restatement of 'has a time'.
- •A driver and their sectors are one row now: the dividing line runs under the pair instead of between them, hovering lights both, and the times start under the driver's name rather than at the far left edge.
- •Opening a single driver, or comparing drivers, still measures them against themselves across the whole weekend — that is the question those screens answer.
Engineer view: a driver and their sectors are one row
- •In the engineer view the sector times printed on a second line under each driver, but the dividing line ran between them — so the sectors looked like they belonged to the driver below. The line now runs under the pair, and hovering or selecting lights both up together.
- •Those sectors also started at the far left edge, under the position column. They are indented to begin under the driver's name, so you read down the same column instead of hunting for where one driver ends and the next begins.
Purple means fastest — everywhere it appears
- •Every driver's headline time was purple. The colour was showing whether they had a time at all, not whether it was the quickest — so the fastest thing on the page looked exactly like the twentieth fastest. Purple now means what it means on any timing screen: the best time in what you are looking at.
- •The same run could show its sectors in one colour on one screen and another colour on the next. One drive can exist as several copies of itself, and only the first was being coloured; the rest kept whatever they had. Every copy is coloured now, from one place, so a sector looks the same wherever you meet it.
- •The improvement against training was purple too, which said 'fastest' about a number that is a gain or a loss. It is green when you improved and red when you did not, matching its arrow.
- •And that line now knows where you are: looking at a race it reads against training, looking at a training it reads against the previous training, which is the comparison actually being made.
Sector colours say what they say in Formula 1 — and training counts
- •Purple is the fastest anyone went through that sector. Green is this driver's own best. Yellow means they have been quicker themselves — a sector slower than their own best. That is the grammar every timing screen uses, and it is what the colours mean here now.
- •They did not before: a driver's best was worked out one session at a time, so somebody with two races got a green sector in each and the colour told you nothing. Christian Merli's two runs at Ilirska both showed green in sector two, when only one of them was actually his best. Now exactly one run per sector carries the green, and the slower one is yellow.
- •Training runs count. A driver's quickest sector is often set in training, and leaving those runs out meant a race sector could be marked as their best while a faster one sat one session earlier. Training now appears in the run list with its sectors, ahead of the races, in the order the weekend ran.
- •The third colour used to be grey, which reads as 'nothing to say'. Yellow says the useful thing: there is time on the table here, and you have already found it once.
Sectors come first when you compare a weekend
- •The sector breakdown sat underneath the session-by-session table, which put it at the very bottom of the page — on a phone that is far enough down to look like it is not there at all. On a hill whose timing gives us sectors, they are the thing people opened the comparison for, so they now come first and the weekend table follows as context.
Compare: the driver you measure against leads the table, and desktop stops whispering
- •Pick a driver to measure against and their column slides to the front, with everyone else falling in behind them by time — quickest first, slowest on the right. The chips reorder with the columns, so the row of names and the table always read in the same order.
- •The word REFERENCE is gone from both the chip and the column heading. The column is simply drawn — one outline around the whole of it, in the same colour as its chip — so you can see which driver everything is measured against without a label telling you.
- •The little coloured dash that sat above every column has been removed. It repeated the class colour that is already on the chip and marked nothing.
- •On a wide screen the comparison now uses the room it has: the table is wider and the times are set at a size meant for a desk rather than a phone in a pit lane.
Sectors are back on screen when you compare a whole weekend
- •Comparing a whole event showed times session by session but no sectors at all — and since the whole event became what compare opens on, that meant the sector breakdown had quietly become something you only found by narrowing to a single heat first.
- •The weekend view now carries its own sector panel: each driver's BEST time in each sector across the entire event, the gap between them, the fastest anyone managed in that sector all weekend with the number of who did it, and each driver's theoretical best. Across four days, a driver's best sector is the honest number — one run cannot stand in for the weekend.
- •On events whose timekeeper publishes no sector times at all, the panel does not appear rather than showing an empty frame. Today that is every event except Ilirska Bistrica, whose timing gives us three sectors on the hill.
Compare opens on the whole weekend, and sessions are named the same everywhere
- •Compare now opens on the whole weekend instead of dropping you into whichever session happened to be last. Scope is the first thing you decide when comparing two drivers, so it is the thing that should already be decided when the page loads — narrowing to a single heat is the deliberate step. Switching event keeps you on the weekend too.
- •Session names read the same on every event and in every language. A heat timed by a Slovenian timekeeper used to come through as "1. dirka" and stayed that way even on the English site; now every organiser wording lands on the same pair, Training and Race.
- •Class names follow suit: the modern groups showed as bare numbers on the new event and now read Group 1 through Group 7 like everywhere else, and the prototype classes sort into the right place in the category filters instead of falling to the bottom.
Ilirska Bistrica is on the app, live, all weekend
- •The 32nd Ilirska Bistrica hill climb — a round of the FIA European Hill Climb Championship — is in the calendar with the full field of 242 entries, and this app will carry it live across both training runs on Saturday and both races on Sunday.
- •It is the biggest and best-described field we have ever had: every entry carries its class, group, category, performance factor and the championships it scores in, straight off the official entry list. So the filters actually work on it — you can watch just the historics, just the prototypes, or just the drivers chasing the Croatian title.
- •The hill publishes three sector splits per run, which means the sector board and the compare view have real data to work with here for the first time on a live event, not just on the 2025 archive.
Compare a whole weekend, chosen the moment you arrive
- •Whole event is now a choice in the session picker, right at the top of the list — pick it before you pick anyone, the same way you would pick a heat. It used to be a second control that only appeared after you had already chosen two drivers, so the scope came last when it is really the first thing you decide.
- •Choosing it lists everyone who raced the weekend, not just whoever happened to be in one heat, and the comparison shows their times session by session with the gap at every step.
- •Switching event while looking at whole weekends keeps you on whole weekends. Only the drivers reset, because they belong to the event you left.
Add a private event from your profile
- •If someone gives you a code for an event that is not in the calendar, you can enter it in Profile now. There was a screen for it, but nothing in the app led there — the only way in was a share link.
- •That matters most if you installed the app to your home screen: opening a share link opens it in Safari, and iOS gives an installed app its own separate storage, so an event unlocked in the browser stays invisible in the app. Typing the code inside the app unlocks it where you actually are.
Compare: the driver list scrolls, the panel has buttons, and you pick who the gaps are measured against
- •The driver list would not scroll. The panel sized itself to its content instead of to the screen, so on a start list of ninety people everyone past the first screenful was simply unreachable. It now fills the screen properly and the list scrolls.
- •It also had no buttons. Picking applied straight away but there was nothing that said so — no way to clear a wrong pick in one go, and nothing to press when you were done. There is a Clear and a Compare button now, and the header counts how many of the four slots you have used.
- •You choose the reference driver. Every gap in a three or four driver comparison is measured against one of them, and that used to be whoever you picked first, changeable only by tapping a column header that gave no hint it could be tapped. Tap any driver chip instead — it is marked, and in a two driver comparison it decides which side is which.
- •Three or four drivers now scroll sideways instead of being squeezed. Four columns of timing digits do not fit a phone, and shrinking them to fit made them unreadable; the columns keep a real width and the metric column stays pinned while you swipe, so you never lose track of which row you are on.
One driver, one identity — 748 rows collapsed to 441, and surnames stopped shouting
- •Following a driver now carries from race to race. It did not before, and the reason was not the follow — it was the driver: every event seed created a NEW person instead of matching the one already there, so Niko Pulić existed six times and following him at one race followed an identity that only existed at that race. 307 duplicate rows were merged into the person they belong to, and every entry, follow, standing and stint moved with them. Nothing was lost: 764 entries before, 764 after, no orphans.
- •Surnames are written properly. 482 drivers were stored as MARINO POROPAT and now read Marino Poropat — on share cards, in notifications, everywhere the name is printed rather than passed through the display helper that already knew better.
- •Four clubs were the same club spelled several ways (AKK Fly with Kolman, ŠD Sigma Motorsport, AK Belson Nostalgija, AK Oneum Omiš) and are now one each. AK Buzet and AK Buzet Autosport are deliberately NOT merged — they are two different clubs.
- •The merge refuses any group where two identities appear in the same event, because a person enters a race once and anything else is either two people or bad data. There were none. A claimed identity always wins the merge, so a driver who has linked their account keeps the link that transponder pairing depends on.
The whole weekend at once — how two drivers moved, session by session
- •Compare now has two views. Session shows one heat in detail, sectors and all; Event shows the whole weekend — every session down the page, each driver's time in it, and the gap between them at every step. Same drivers in both, so switching costs you nothing.
- •It answers the question a session view cannot: did he actually improve from training into the first race, or did everyone just get quicker? The gap column is the story, and the weekend best sits at the bottom.
- •A retirement is not a blank. DNF, DNS and DSQ show up where they happened, penalties are marked on the time they were added to, and the time shown is the one the driver was actually credited with — the penalty already folded in, exactly as the results treat it.
- •Sessions nobody has run yet stay out of the way, so on a Saturday morning you see the weekend so far and not a wall of empty columns.
Compare up to four drivers — and any run against any other
- •Compare is no longer limited to two people. Add up to four, as removable chips, and the layout changes to suit: two stay in the head-to-head view, three or four switch to a column grid where one driver is the reference — their times in full, everyone else as the gap to them. That is how the question is actually asked at a hillclimb (“how far off my driver are they?”), and four columns of three sectors still fit a phone without scrolling sideways. Tap any column to make that driver the reference.
- •Any run against any other. Each driver now has a run picker, so you can put a training run next to a race run, second run against first, or the run before the rain against the one after. It defaults to the run that counts, and the list shows every run of the weekend grouped by session with its session-best, personal-best and penalty marks — including the ones that ended in a DNF, which are shown rather than quietly left out.
- •Whenever anyone is on something other than their best run, the comparison says so at the top. A screenshot claiming one driver is quicker than another should never leave out that they were driving different runs.
- •Links keep up: the drivers and the chosen runs live in the address, so a comparison you send someone opens exactly as you left it. Older two-driver links still work.
Sector-by-sector: where a lead is won, and the weekend benchmark to chase
- •Picking a driver no longer means spinning a 90-name wheel. The picker opens as a proper panel with search — type a name or just the number — your followed drivers grouped at the top, and every line showing position, car number, class and current time, which is how people actually recognise a driver at a hillclimb. Choosing the driver who is already in the other slot swaps the two over instead of showing a greyed-out name.
- •The running gap after each sector. A comparison used to say only who was quicker in each sector on its own; now you can follow the gap as it accumulates and see exactly where the lead was won or lost — and when it changes hands, it says so.
- •The weekend benchmark, with a name on it. Each sector shows the fastest anyone has been through it across the whole event, and the car number of who did it. A reference time with nobody attached gets ignored; one with a number next to it gets chased.
- •Theoretical best for both drivers — their own quickest sectors added up, side by side. It is the lap neither of them has put together yet, and on a hill with sector timing it is usually the most interesting number on the screen.
- •Built for Ilirska Bistrica, where the timekeepers give us sector times on the hill — but it works anywhere the sectors come through.
Compare now tells you the difference — and keeps up with the race
- •The gap in every sector is finally on screen. Before, you got two columns of times and had to do the subtraction yourself, standing at a hillclimb, on a phone — the difference IS the comparison, so it is printed next to each sector on the side of whoever lost it.
- •The gap says whose it is. “Gap: +0.500” never told you who was half a second down; it now reads “Poropat ahead by 0.500”, and two identical times are called a dead heat instead of showing a blank ±0.000. Bigger gaps — normal in training, where nobody gets a second run — are written as 2:22.331 rather than a raw 142 seconds.
- •Sector colours mean the same thing here as everywhere else in the app: purple for the fastest sector of the session, green for a driver's own best. Compare had been using that green to mark “the quicker of these two”, so the same colour said two different things one tap apart. It also could not be read properly in daylight — the head-to-head numbers now use a darker pair made for exactly that.
- •Open during a live session, it stays current. The comparison used to freeze at whatever the times were when you opened it: the other driver could improve and nothing on screen would change, or admit it had stopped looking. It now updates itself while the event runs, shows a live dot, and tells you the time it last checked.
- •Compare is reachable from where you actually decide to use it — there is a Compare button on a driver, so you can go straight from looking at one to weighing them against a rival. Until now the only way in was a button on My Drivers, and only once you followed at least two people.
- •Two things that were quietly wrong: on a race morning the drivers on screen could belong to an event the picker did not even list, and switching session could empty the comparison and leave a broken link if you shared it. Picking an event now lands you on the session that is actually running, or the last one with results — never an empty one.
- •A rally crew keeps both names, a driver with no time shows DNF, DNS or DSQ instead of a dash, and the class sits under the car number. Switching event or session shows that it is working instead of looking stuck, and if something does go wrong you get a message in your own language with a way back, rather than a blank English screen.
- •The screen also works properly with a screen reader now — every control is named, the result is announced when it changes, and the buttons are big enough to hit with gloves on.
A dropped signal no longer looks like a crash
- •On a weak connection - a dip behind the hill, a packed paddock - a page could die mid-load and the app answered with a full error screen: "Something went wrong", in English, whatever language you were using. It happened to a real spectator at Cazin who did nothing more than tap through to a live heat. The app now tells the difference between the network blinking and something being genuinely broken. It waits a beat and retries once by itself; if you are offline it waits for the signal to return and then carries on. Only when that also fails do you get a screen, and it now says what actually happened - a connection problem - in your own language, in all five.
- •The error screen itself is now translated into all five languages, and it names the problem instead of shrugging: a lost connection says so, and only a genuine fault shows the error code worth sending us.
Non-starters are no longer shown as being on the hill
- •The new on-track inference paraded DNS cars as running: seen from the start panel a non-starter is indistinguishable from a launch - the car is listed, then it is gone, and no time ever arrives - so it was projected onto the banner for the full four-minute window (Cazin 2026: three DNS cars shown as on track). The projection counted only FINISHERS as done; it now also counts RETIREMENTS, which the bridge already tracks per session, so a DNS or DNF clears the banner as soon as the results reconcile picks it up.
An open live page now follows the race into the next heat
- •A tab left open on a heat stayed there after that heat finished: at Cazin 2026 Trening 1 ended, Trening 2 ran its entire length, and the page only caught up when it was reopened by hand - so anyone watching passively sat on finished results while cars were on the hill. The auto-select ran once on open and then deliberately never moved again, to protect a session the viewer had chosen. It now distinguishes the two: the page follows the race only when the heat it is showing was picked automatically AND has completed AND another is live. A heat you tapped yourself is still never moved out from under you, including after it finishes.
The live banner shows who is on the hill, not just who is at the start
- •The timing feed publishes three live panels - at-start, on-track, recent finishers - and normally fills all three. But a feed can STALL: during Cazin 2026 it sat on 30 finishers for a long stretch and then jumped to 60, and through that stall its on-track panel returned empty, so our banner could only say who was queued at the start and went blank while cars were actually on the hill. A stalled feed is exactly when spectators stare at the screen. The same hole was solved at Platak by projecting from our own start order; here the at-start panel keeps working, which is a better signal: a car that WAS at the start, has left it, and has no time yet is on the hill by elimination. This NEVER competes with live data - the moment the feed reports on-track again, its list wins and the projection is discarded. New on-track-projection.ts infers exactly that, with the guards that keep it honest - a real on-track reading always wins, a car drops the instant a time or DNF/DNS appears, a projection expires after four minutes so a quiet retirement stops haunting the screen, a worker restart never hands already-departed cars a fresh window (the phantom car seen at Platak), a car returning to the start panel clears, a flickering start panel is tolerated, and at most three cars are ever claimed. This also fixes a related sharp edge: the old ghost-eviction pulled a driver off the banner 12 SECONDS after leaving the start, while a hillclimb run takes minutes - eviction now waits for the projection window to lapse. 11 unit tests plus the bridge suite.
Driver name never loses space to the car description
- •The results table was clipping the thing spectators actually look for: "Uros Br…", "Dejan D…", "Viliam P…" sat next to a comfortably roomy "Lamborghini Huracan". The car column was a FIXED width with shrink-0, so the driver cell - the only flexible one in the row - absorbed every shortfall and truncated first, exactly backwards from the rule the code comment already stated. The name now keeps a guaranteed floor and twice the flex share, while the car column flexes, caps its width and truncates instead. It still drops out entirely below lg as before. Six tests pin the layout rule so it cannot silently regress.
Live screen no longer claims the day is over before it starts
- •On the Cazin 2026 race morning the public /live screen announced "Sve danasnje sesije su zavrsile" while every session was still scheduled and the first practice had not begun. The countdown treated "no session left to count down to" as "the day is done", but a session with no published start time is simply unscheduled, not finished. Done-for-today now requires what it claims: at least one session actually COMPLETED and none still scheduled or running. Otherwise the screen stays quiet instead of publishing something untrue to spectators. Same screen, same morning: the red UŽIVO badge sat directly above the words "Trenutno nema live vožnji" - it was driven by the event window being open rather than by a session actually running, so it now tracks a session with status live. Five regression tests pin both (scheduled-only, one live, all complete, badge without a live session, badge with one).
Puno lakša live stranica
- •Live tablica sada putuje bez nepotrebnog tereta: stranica je 42% manja, a detalji vožnji (sektori, povijest, penali) stižu odmah iza prvog prikaza umjesto da ga usporavaju. Na sporijim mrežama tablica se pojavljuje osjetno prije, a svako otvaranje troši znatno manje mobilnih podataka.
Čitljivije boje klasa
- •Startni brojevi i oznake klasa u boji sada automatski prilagođavaju nijansu teksta temi — boja klase ostaje prepoznatljiva, a tekst je čitljiv i na tamnoj i na svijetloj podlozi (WCAG AA).
- •Popravljen razvučeni Meet for Speed logo u bočnoj traci.
Lakše listanje velikih startnih polja
- •Redovi izvan ekrana više se ne iscrtavaju dok ne dođu u kadar — na poljima od 80+ vozača stranica se prikaže i lista osjetno lakše, posebno na starijim telefonima.
Brže prvo učitavanje
- •Obavijest o kolačićima sada je dio prvog prikaza stranice umjesto da naknadno iskače — mjerenja su pokazala da je upravo njeno kasno pojavljivanje najviše usporavalo dojam učitavanja.
- •Stilovi stranice više ne blokiraju prvi prikaz, a uklonjen je i nekorišteni vanjski skript.
Easier reading everywhere
- •Slightly larger, easier-to-read text across Events, Following, Notifications and Profile — the same treatment the event pages got, with live timing untouched.
Race numbers in class colours
- •Start numbers across live timing and startlists now carry their class colour — scan any row and instantly see which class the car runs, even on the phone where the class column is hidden.
Lighter phones
- •Phones no longer download the desktop driver side-panel at all — the shared progress/training sections moved to a common module and the panel loads only on desktop, only when opened.
Withdrawals, race format control & unofficial startlists
- •Withdrawn drivers now show a WD mark on the entry list and automatically drop off startlists and live timing — their earlier results stay.
- •Organisers can switch an event's Race Results between the classic total and best-single-run directly from the dashboard.
- •Events with a paid/unofficial practice now link its own start list from the event page.
Slovenščina, Deutsch, Italiano
- •The app now speaks five languages: Croatian, English, Slovenian, German and Italian — with proper motorsport vocabulary in each (gorska dirka, Bergrennen, cronoscalata). Pick yours under Profile → Language.
- •Share cards and the language suggestion banner follow along, and links like /sl/live or /it/live now work directly.
Even lighter startup
- •Error monitoring now loads only once the page is idle — with a catch-all net that queues anything that happens earlier, so nothing goes unreported while the timing screen gets the whole phone to itself on startup.
Faster first load
- •The live timing page starts noticeably faster on phones: error-monitoring shrank to essentials, analytics now load only once the page is idle, and the share renderer loads on first share instead of up front.
Screen-reader table cells & sharper labels
- •Every timing-row column now reads as a proper table cell to assistive tech, position arrows announce their meaning, and light-mode secondary labels meet the WCAG contrast bar on every surface.
Per-app search visibility
- •Each branded app now decides on its own whether search engines may index it — and its sitemap lists only the pages that app actually serves, so crawlers are never sent to hidden surfaces.
No phantom "at the start" alerts after a race ends
- •When a session finishes, the timing feed's post-race demo traffic no longer triggers "at the start" notifications for cars that never ran.
Startlists match the right car for multi-car owners
- •When one owner enters several cars under the same name, startlist updates now pair each row with the correct car (by car, then by number) — and leave it untouched rather than guess when it cannot be sure.
No more zoom jump on search
- •Tapping the search field on a phone no longer zooms the page in — the timing screen stays exactly where you left it.
"Results are in" notifications
- •When a session finishes, followers of the event now get a push the moment results are final — previously this only worked for manually closed sessions, so real races never sent it.
Follow an event without an account
- •The follow bell on the event page now shows for everyone, not just signed-in users — so "session live" and results notifications work on apps without sign-in too.
Share cards name the session
- •Sharing a time now says which session it came from — "Practice 2" or "Race Run 1" above the time instead of a generic "Best time", on every card format.
Accessibility: proper table semantics & pinch-zoom
- •The live timing table now exposes a fully valid table structure to screen readers — header, groups and rows all read in order.
- •Pinch-zoom is no longer blocked, so you can magnify the timing screen on any phone.
Race Results can rank by best run
- •Events can now choose how their overall Race Results are ranked: the classic total of all runs, or the best single run — the sprint & festival format where your fastest time of the day counts. Set per event; the results table labels the column accordingly.
Compare stays within your event
- •On single-event apps, the Compare picker and the after-race fallback no longer list races from other calendars — you only see the event you are at.
Root fix: finished drivers can no longer get stuck "on track"
- •A deeper follow-up to the earlier flicker fix. A driver who had crossed the finish line could still get stuck showing "on track" when the timing feed briefly glitched — their live "on-track" marker was never fully cleared, and the live view could re-apply it over their finished time. Now cleared and blocked at every layer. It lives in the shared timing engine, so it protects every event on every timing feed, not just this one.
Driver card polish — readable names, clear share, average speed everywhere
- •On desktop, opening a driver card no longer squeezes the names in the table — the car column steps aside so the driver name stays fully readable (the selected car is shown in the card itself).
- •The share button on the driver card now reads "Share to social" on phones too, not just a bare icon, so it is clear what it does.
- •Average speed now appears on every driver card that has a time — including the fastest driver of each class, where it was hidden before — in a cleaner dedicated row.
No more finished ↔ on-track flicker on live timing
- •Fixed a flicker where a driver who had already crossed the finish line could briefly bounce back to "on track" during a live session — the finished time now stays put. A genuine repeated run (granted after someone got in the way on course) is still shown correctly.
Cleaner timing table & startlist on mobile
- •When an event has no clubs entered, the Club column now hides itself automatically instead of parking an empty column — and the class label takes that room to show its full name ("Supercars & Hypercars") instead of cutting off.
- •On the startlist, the car each driver is racing now appears under their name on phones — it was only visible on wider screens before.
Average speed on the share card
- •Share your result and the card now shows your average speed in km/h next to the time — on point-to-point sprint events where the course length is known.
Cleaner event pages, bigger type
- •The event page now leads with the event name up top, the venue and dates sit clearly beneath it, and every section lines up — with bigger, easier text throughout.
- •The countdown to the next session reads top to bottom: "Next session in", the clock, then the session name and its start time.
- •The entry list page got a cleaner header and says plainly when a list has not been published yet.
- •The standings section is hidden for now while we finish it properly.
Language links fixed, small polish
- •Opening a link with a language we don't support yet (like /it/ or /sl/) now lands on the page in your own language instead of an error page.
- •Driver names on share cards read naturally (#17 V. Prodan).
Share images, made for Instagram
- •Sharing a result now opens a picker with a live preview — choose a feed post (4:5), a full-screen story (9:16), or a transparent story overlay you can place over your own video or photo with Instagram's photo sticker.
- •Story images keep clear of Instagram's own interface — nothing important sits under the profile chip or the reply bar.
- •The share button is now "Share Image" with the Instagram icon, and the image in the preview is exactly the one that gets shared.
Timing-provider credit: "Timing by" with the provider's logo
- •Every event now credits the timing crew behind the data — a subtle "Timing by" line with the provider's logo (starting with Trogir Timing) sits in the credits zone at the bottom of the event page and under the pre-race countdown.
- •Providers without a logo show their name; the credit appears on every app, because knowing whose timing you're watching is part of the product.
Start-line alerts: push when a followed driver is at the start and when they launch
- •Follow a driver and you'll now get a ping the moment they roll up to the start line ("Na startu") and the moment they launch ("Na stazi!") — perfect for catching your driver's run live instead of only hearing the result.
- •Both alerts have their own toggles in Notification preferences (on by default), work with or without an account, and deep-link straight to the live timing view.
Sharing a specific run you retired in shows DNF for that run
- •Refines the previous change: when you share a SPECIFIC run that a driver retired in (e.g. Vožnja 2 DNF), the card now states “DNF” for that run — honest to what happened there — instead of falling back to an earlier run’s time. The overall Race Results share still shows the best time they set (with its session name), since that represents their weekend. A driver who set no time anywhere still shows DNF / DNS / DSQ.
Share card keeps the time you set, even after a DNF in another run
- •If a driver set a time in one run but retired (DNF) or didn’t start (DNS) another, the share card now shows the time they DID set — labelled with its session (e.g. “Vožnja 1 · 3:09.000”) — instead of just “DNF”. This applies when sharing the run they retired in and when sharing the overall Race Results. Only a driver who set no time at all still shows DNF / DNS / DSQ.
Fix: share card for a retired / did-not-start driver
- •Sharing a card for a driver who retired (DNF), didn’t start (DNS) or was disqualified (DSQ) with no time set showed a broken figure ("+Infinity:000NaN s vs best training") where the time should be. The card now simply shows their status — DNF / DNS / DSQ — under the session (or “overall” on Race Results), with no time and no comparison.
Fix: race-results share card hid the position when a driver missed a later run
- •On the Race Results (overall) share card, a class or category position could stay hidden even after the event finished and everyone had run. The cause: a driver who completed an earlier run but did not start a later one (a DNS, with no retirement marked) was treated as still pending rather than finished — which kept their whole class/category "not final yet", so nobody in it got a position. Such a driver is now correctly counted as finished (did-not-finish the overall), so once every driver in a class/category has run, their positions appear on the card as they should.
Search box now describes what each page actually searches
- •The search box used the same wording everywhere ("events, drivers, clubs") even though each page searches different things. It now matches the page: on live timing it reads "Search drivers, #, club", and on the events list "Search events, venues, championships".
Filtered timing shows positions within the filter, not overall
- •When you narrow the live timing to a single class, group or category, the position column now counts within that filter — pick "Kategorija 1" and the leader reads 1, the next 2, and so on, instead of keeping each driver's overall place. Clear the filter and the overall positions return.
Fix: share card — improvement delta overlapped the driver name
- •On a share card for a driver with two runs (e.g. live during Vožnja 2), the green improvement figure was drawn over the driver's name. It's now shown only in the per-run breakdown below (where it belongs), so the time + name read cleanly.
Session names are now uniform and properly translated
- •Session labels used to be shown as the timekeeper typed them — so "1. vožnja" or "Službeni trening 1" appeared verbatim, untranslated, and differently per event. They're now built from the session TYPE plus its number, so every event reads the same: Vožnja 1/2 (Race 1/2 in English), Trening 1/2 (Training 1/2), Unofficial Practice. The "Na startu" / "At Start" banner is localised too.
Fix: Race Results now appears for hillclimb events
- •The aggregated Race Results view (sum of each run's best time) never showed at hillclimb events: the code only recognised sessions of type "heat", but a hillclimb run (Vožnja 1/2) is type "race". Every place that gates Race Results — the session pill, the aggregate data, the run-vs-run comparisons — now counts "race" runs too, so Race Results turns on once the first run is underway.
Mobile: tapping another driver switches in one tap
- •On a phone, tapping a second driver while one is already expanded now closes the first and opens the new one in a single tap — matching the desktop detail panel. Previously the first tap only closed the open row, so you had to tap twice.
Real category placings (Moderna / Povijesna / Formula) + a Category filter
- •Categories are now a first-class thing. A driver's "Kategorija" placing is their real place within the whole category (Moderna / Povijesna / Formula-Proto / Regularity), by time across all its classes — not the class placing relabeled. It shows on the share card (and updates everywhere) only once the entire category has run.
- •The timing filter bar gained a Category filter, and the redundant Group filter now hides itself when a group is just the class under another name (modern hillclimb) — it only appears when a group genuinely spans several classes (e.g. Historic).
- •Tapping a driver row open on mobile now spells out their full name (car number + first + last) — handy when the name is truncated in the row on a small screen.
Shareable result card — redesigned, and only final positions
- •Sharing a driver's result now produces a branded portrait card: a procedural dusk-mountain background tinted by the driver's class colour, the race name, the time, an improvement vs best training, and the HCW·LIVE mark + link — built for Instagram/stories.
- •No more misleading positions mid-session. A class or category placing is shown ONLY once that whole class/category has finished running (everyone with a final result — including DNF/DNS). While a class is still running, the card leads with the driver's TIME (which is real) and a "UŽIVO/LIVE" badge instead of a provisional "P1" that could still change. When the session ends, the positions appear automatically.
Fix: race runs showed an empty "Best Lap" column instead of run times
- •A hillclimb race run (Vožnja 1/2) is a "race"-type session, but the timing table was reading that as circuit racing — printing a "Best Lap" header with empty cells instead of each driver's run time. Circuit vs hillclimb is now decided purely by the data (only true circuit/lap sessions ever carry lap data), never by the session type, so a race run correctly shows its times.
Fix: retired (DNF) and did-not-start (DNS) cars now show correctly live
- •When a car retired on track (DNF) or didn’t take its start (DNS), the live timing could leave a stale time on screen, or keep the car stuck in the “at the start” list. The timing now reads the retirement straight from the timekeeper’s feed and marks the car DNF / DNS the moment it appears — clearing any old time and dropping it out of the start queue — with no one needing to mark it by hand.
A brand-new look for shared results
- •Sharing a driver’s result now produces a redesigned portrait (4:5) image card. It leads with the HCW LIVE logo, the driver’s number beside their name, and their car · class, with their class position big and their category position alongside it. Each card is generated with its own soft mountain backdrop, tinted by the driver’s class colour, so no two shares look quite the same.
- •What the card shows now follows the moment: a single best time for a first run, both training runs (including the unofficial practice) with the improvement between them, a race run’s gap to your best training, or both race runs with the gain/loss — and a small “UŽIVO / LIVE” badge while the session is still running. The card matches your language (Croatian or English).
Cleaner live list — the on-track dot moved to the far left
- •The green / amber “live” dot next to a driver who is on track (or queued at the start) now sits on the far left, in the position column where their rank appears, instead of in front of their name. Every name now starts at the same place — no more sideways shift when the dot appears — and names get a little more room, so full first + last names fit better on smaller phones and larger text sizes.
Fix: the last item in a long list could be cut off at the bottom
- •On the installed app, the bottom of a long list — for example the last event on the Events screen — could sit just under the tab bar and be impossible to scroll to. The app frame was being sized to the full screen height while the real content area is a little shorter (it reserves room for the phone’s status-bar inset), so the overflow was quietly clipped. The frame now fills its actual area, so you can always scroll all the way to the last item.
Smoother screen switching on mobile
- •Switching between the bottom-bar tabs on a phone is now a single, clean slide. Before, the outgoing and incoming screens briefly sat on top of each other mid-transition — so arriving on a new screen could look like it loaded or flashed twice — and the slide had a wobbly overshoot. The new screen now eases straight in (no bounce) and the old one is replaced instantly, so there is only ever one screen on the move.
- •Opening a session from an event (Events → an event → a session) no longer slides sideways as if you had jumped to the Live tab — drilling into live timing from an event now just opens it. The sideways slide is kept for what it means: switching between the bottom-bar tabs.
Cookie banner / privacy policy — no longer traps you on mobile
- •Opening the privacy policy from the cookie banner no longer leaves you stuck. The page now has a real “Back” button that returns you to wherever you came from (and falls back to the home screen on a direct link) — previously it only linked to Profile, which dead-ended logged-out fans and the installed app, where there is no browser back button.
- •The cookie banner also steps out of the way while you read the privacy policy instead of covering the text, and re-appears when you leave.
Live-session alerts fire when the session actually starts
- •The “session is LIVE” alert now reaches you the moment the first car is on the start line — so you can open the timing right as the action begins, instead of after the first car has already finished.
Cleaner account menu for fans
- •Your account menu now opens your Profile directly — the staff-only Dashboard link no longer appears for fans.
Unlock a private event with a code — and have it stick to your account
- •Got a code for a private event? Enter it once and the event opens up completely — live timing, results, follow a driver, head-to-head compare — exactly like any public event. Nothing is held back.
- •Sign in first and the unlock follows your account: open the same private event on any of your devices and it’s already unlocked, for good. Not signed in? It still unlocks on the device you used.
- •Share links keep working as before — one tap and you’re in.
Clearer race results + driver names that never get squeezed out
- •Live race results now show EVERY driver — including those who’ve completed only some runs so far. Drivers with a complete total rank at the top; those still mid-event sit at the bottom (no longer hidden until they’ve finished every run).
- •When you narrow the screen, the car column is the first to drop — the driver’s name stays visible, never squeezed out, on every timing view.
- •Superfinale support: a session can now carry its own startlist (e.g. a "Top 5" run with only the top finishers, in their own reversed grid) without affecting the overall classification.
- •Driver detail → Napredak: the training comparison is now labelled "Naspram treninga" / "vs. training" (it’s the gap to your best training, not the training itself).
No more sign-in loop when you back out
- •If you start signing in and then go back without finishing, HCW Live no longer immediately bounces you into sign-in again — and the sign-in screen now has a “Back to HCW Live” link so you can simply leave.
Sign in straight from the navigation
- •When you’re not signed in, the bottom tab bar and the desktop sidebar now show a “Sign in” entry instead of an empty Profile screen — so you can sign in from anywhere, not just the profile page.
Sign-out-everywhere takes effect faster
- •When you sign out of your Hillclimb World account everywhere, HCW Live now picks it up within ~15 seconds (on your next page view) instead of up to a minute.
Signing out keeps you on your profile
- •After you sign out, HCW Live keeps you on your profile screen (now showing the sign-in prompt) instead of jumping to the live timing screen.
Sign-in brings you back where you were
- •After you sign in, HCW Live returns you to the page you were on instead of always the profile — and following the sign-in link from your Hillclimb World account now logs you straight in here.
Sign out everywhere now signs you out here too
- •Security: when you sign out of your Hillclimb World account everywhere (or change your password), HCW Live now signs you out on this device too — instead of staying logged in until the session expired.
Smooth slide between every bottom-tab screen
- •Switching between the bottom tabs on your phone now slides consistently across all of them — Live, Events, My Drivers, Notifications and Profile. Before, the slide only showed between a couple of screens; the others just snapped in.
HCW Live branding on sign-in & registration
- •The sign-in and registration screens now show the proper stacked HCW Live logo — the registration screen had still been showing an old placeholder mark.
Tap a winner to filter results · training form for upcoming drivers
- •On a finished event, tapping a podium card or a class-winner card now jumps straight to the full results, filtered to that class — one tap from “who won the class?” to the whole class order.
- •Open a driver who hasn’t started their run yet and you’ll now see their training form: every practice time with the gains between runs, how much they’ve improved on average, and an estimated race time based on that trend.
Installed app fills the whole screen on iPhone
- •The installed app on iPhone now fills the screen edge to edge — no empty strip under the bottom navigation, content tucked neatly under the status bar and clear of the home indicator.
My Drivers & Compare keep working after a race
- •My Drivers and the Compare view now fall back to the most recent finished event when nothing is live — so you can review your drivers’ results, compare their times and grab a share card straight after the chequered flag, not only during the race.
Share your result as a card
- •Share a driver as a clean, branded card — position, name, number, class and best time — ready for stories or chats. From the driver panel, or just swipe a row on the timing list.
Head-to-head — compare two drivers
- •New Compare view: put any two drivers side by side — best times, the gap between them, and a sector-by-sector split showing who’s quicker where.
- •One tap from My Drivers pits the top two you follow against each other.
- •Your followed drivers sit at the top of every picker — quick to reach, but the whole field is fair game.
- •Compare across any event and session, not just the live one — pull up any weekend, any heat.
My Drivers — your followed drivers, live
- •New “My Drivers” tab: everyone you follow, in one place, with their live status during an event — on track, finished, their time, position and gap — tap to jump straight to them in the timing.
- •When nothing is live it tells you so and points to what’s next; when you follow no one yet it shows you how to start.
- •Manage your drivers right from the tab: a search-to-add panel to follow more drivers from the event, and one tap on the star to unfollow.
- •A prominent “Compare drivers” button puts head-to-head front and centre.
Bottom tab bar fits every context
- •The bottom navigation now sits right in every browser: more breathing room under the icons in Chrome, pulled flush to the bottom in the installed app (no more floating gap), Safari unchanged.
No column jump when live results first appear
- •The loading view now matches the real leaderboard column for column, so nothing shifts sideways the moment the first times arrive.
Smoother live timing on big fields
- •The live leaderboard stays fluid even with a 100+ car field updating sub-second — most noticeable on older phones during a busy heat.
- •The top bar, filter chips and driver detail panel stay just as steady — no flicker as new times pour in.
Live events show as live everywhere
- •When a race starts, the event is now marked “live” the moment the first car crosses — so it shows up under the Live filter and is unmistakably live across the whole app, not just on the timing screen.
Installed-app full-screen fix
- •The installed app now fills the screen exactly — no empty strip at the bottom, no cut-off at the top of the Live screen, even where iOS used to mismeasure the height.
Installed-app layout fix
- •Fixed the installed app showing an empty strip at the bottom and occasionally clipping the top of the Live screen — it now fills edge to edge, with the status-bar area kept clear.
A more native feel — smoother scrolling, instant offline, cleaner launch
- •Tapping feels cleaner everywhere: no more grey flash on buttons and no accidental text-selection or pop-up menus on the app’s controls — it reads like a real app, not a web page.
- •Lost signal on the mountain? You now get a branded HCW Live screen (Croatian or English) that quietly keeps trying to reconnect and drops you straight back into the timing the moment you’re online again.
- •Switching between tabs has a smoother, springier motion.
- •Home-screen / installed-app fix: page titles and filter chips no longer slide up under the phone’s status bar when you scroll (Events, Notifications, Live).
- •Opening Live from another screen no longer flashes the start list before the results — it shows the session you were watching, with its times, straight away.
- •In the installed app the launch screen now holds until the timing is actually ready, then fades — no flash of a blank screen on open.
Running order is right the moment you switch
- •Switch between sessions — say Training 2 to Race 1 — and the running order is correct straight away, no refresh needed to unscramble it.
On-track stays visible after you return to the app
- •Coming back to a live session — switching apps, locking the phone, reopening — no longer blanks out who’s on track and who’s on the start line. The live banner and the waiting list are restored correctly, not just after the next timing update.
- •Fixed the on-track / on-start dot crowding the driver’s name on narrow screens.
Your account is the source of truth for notifications
- •Once you have an account and are signed in, your followed drivers and this device’s notifications attach to your account — so they follow you across phones, even after switching to a new one.
- •Fixed a case where signing in — especially right after setting up a new phone — left this device getting nothing because its notifications were still anonymous; they now attach to your account automatically.
Unofficial practice gets its own start list page
- •The unofficial practice now has its own entry under Start Lists — opening it shows exactly that session’s running order, separate from the training and race start lists.
- •The link appears only for events that actually hold an unofficial practice.
Unofficial practice, training and race — three separate lists
- •Unofficial (paid) practice, official training and the race now each have their own startlist — they no longer share one, so drivers stop seeing themselves on a list they are not driving, or missing from one they are.
- •Each session shows exactly its own starters; the official training view shows the whole entered field until its list is published, so nobody looks "dropped" before it is out.
- •The automatic startlist import handles all three independently — the unofficial list can never overwrite the official one.
The session you watch is the session you share
- •Switching sessions on live timing now updates the address bar — refreshing or sharing the page keeps you exactly where you were, instead of bouncing back to the session you first arrived on.
Countdown that speaks your language
- •The event countdown badge now tracks the next session, not the calendar: it says "Sutra/Tomorrow" when the first run is a day away, and "Danas/Today" only on the day itself.
- •The whole countdown is now properly bilingual — labels, dates and the next-session line follow your language, and "1 dan" finally stops being "1 dana".
- •Session names are standardized in both languages: Neslužbeni trening / Unofficial Practice, Trening / Training, Vožnja / Race — regardless of how the organiser spelled them (Vožnja, Utrka or Trka).
Live header, tidied up
- •The event name in the live timing header now gets the room it deserves — the session picker gives way a little sooner instead of crowding it out.
- •The connection dot sits flush with the right edge of the header, without the dead gap that used to trail it.
Follow & push, fully honest
- •Unfollowing a driver from your Profile now really stops their push alerts — before, the driver disappeared from the list but this device kept getting pinged.
- •Turning notifications off inside the HCW Live app now deregisters the device properly, so alerts genuinely stop on native too.
- •The notifications switch in your Profile now flips on by itself when following a driver or event enables push — it always shows what this device actually does.
- •When notifications are blocked, the message now says where to fix it (browser or device settings) instead of just announcing the denial.
Finisher landing, polished
- •A finishing driver’s row now glows green the moment they cross the line, rides the green through its slide into position, and fades the instant it lands — the eye follows one continuous moment.
- •Fixed thin red streaks that could flash near rows on phones while the list reshuffled after a finish.
Slimmer event cards
- •Event cards on the Events list lost the clutter: the championship name now sits under the event name, dates no longer break mid-number, and the entry counts and session chips are gone — every card is roughly half its old height.
Podium that fits your phone
- •On phones the post-race podium is now three compact rows — position, driver, class and time at a glance — instead of three tall cards, so the whole podium (and what follows) fits one screen.
Finished events, decluttered
- •After the chequered flag, event pages now lead with the Full results button and a single overall podium — the wall of per-category podiums is gone.
- •Class winners moved into swipeable card rows, one carousel per category, so every category still gets its winners front and centre.
- •Training Results, Race Results and the original entry list are now one tap away next to the startlists on every finished event.
Startlists publish themselves
- •The official startlist now appears the moment the timekeeper publishes it — running order, reassigned start numbers and withdrawals, all on their own, with no one transcribing by hand.
- •Revisions through the day are picked up automatically too; incomplete or mismatched lists are held back rather than shown half-finished.
Notifications that tell you the truth
- •If your browser can’t deliver push notifications (like Safari or Chrome on iPhone), enabling notifications or following a driver now offers a one-tap shortcut to the app install guide — instead of a dead-end "permission denied" message. Installed apps get notifications; we now just say so.
- •Following an event now also readies this device for push alerts, the same way following a driver does.
- •Switching push notifications on or off confirms right inside the Notifications section, next to the toggle you just used — not in a banner at the top of the page.
- •Turning notifications off now reliably stops push for this device, even when it was enabled by following a driver rather than the settings toggle.
Finish flags that tidy up after themselves
- •The 🏁 next to a finisher now fades away about 30 seconds after they cross the line — flags always point at what is happening right now, and a finished session cleans itself up.
A proper finish flag
- •The last three drivers across the line now carry a 🏁 finish flag next to their name — replacing the red dot and the "u cilju" text.
- •When a finisher lands in the standings, their row washes briefly in green — the same green as the on-track dot — and fades, instead of staying tinted.
Entry lists in official order
- •The entry list (lista prijava) now appears in exactly the same order as the official published document — historics first, then the national class and Category 1 groups — instead of a generic sort by start number.
- •Once an official startlist is published it still takes over, row for row, as the single source of truth for running order.
Snappier driver details
- •Opening and closing a driver’s details is now instant and smooth on every phone — no more heavy stretch dragging the whole list with it.
Watch a result land
- •When a driver crosses the line, their row now slides into its place in the standings and the cars below shift down — so you can actually see a result land instead of the list silently jumping.
- •The latest finisher is marked “u cilju”, and the last few to cross the line stay gently highlighted, so it’s obvious at a glance who just came in.
- •That highlight survives refreshes and late joins — open the timing mid-session and you still see who came in last, same as everyone watching from the start.
- •The driver view stays lively; the engineer view stays a calm, steady grid — and all of it respects your “reduce motion” setting.
- •Opening and closing a driver’s details is noticeably snappier — tapping one no longer disturbs the rest of the list.
Live results, the instant they happen
- •Race and Training results now update live the moment a driver crosses the line — every viewer sees it at the same time.
- •Smoother and lighter even when a big crowd is watching the same event at once.
Race Results update in real time
- •Race Results now refreshes the instant a driver crosses the line — it tracks the live heat directly, instead of catching up on a timer.
Podiums and filtering by category
- •Event results now show a separate overall podium for each category — cars, formulas & prototypes, historics and regularity each get their own top 3, below the mixed "fastest overall" board.
- •The top board is now clearly labelled as the mixed-categories result, so it is obvious when a prototype out-times the cars for the fastest overall run.
- •New Category filter on live timing and results — narrow the field to cars, formulas/prototypes, historics or regularity in one tap.
- •Category names now adapt to your view: spectators see plain language (Cars, Formulas & prototypes), while the driver and engineer views show the technical labels (Category 1, Category 2, Historic).
Always-current timing on every screen
- •Switching tabs or windows — or reopening the app — now pulls the live standings fresh on the spot, instead of showing a stale list until the next refresh.
- •Race Results now updates on its own while a heat is running, rather than freezing until you reload.
- •Two views of the same session stay in sync within seconds.
Live heats stay live until the whole field has run
- •A live session no longer ends itself during a long pause between groups — it stays live until every confirmed starter has started and crossed the finish line.
- •Fixes the live page going dark mid-heat when there was a gap before the next category (e.g. before Kategorija 2 in Vožnja 2).
On-track drivers show again
- •Fixed the "Na stazi" banner — drivers currently on track now appear again instead of being mistaken for finishers with no time.
- •A blank time arriving as "0" was being read as a completed 0-second run; it is now correctly treated as "still on track".
- •Race Results and live rankings no longer place a driver with no time ahead of drivers who set one — fixes the wrong leader and the inflated "+2 minute" gaps.
Bulletins scoped to their session
- •Steward bulletins now show only in the session they were issued in — a Vožnja 1 message no longer appears during Vožnja 2.
- •Each bulletin shows once (no duplicates).
Live sessions update without a refresh
- •When the next run goes live (e.g. Vožnja 2), the page now flips to live and pulls in finishers on its own — no refresh needed.
- •Status refreshes itself whenever the connection comes back, so locking your phone mid-race no longer leaves a stale heat on screen.
Notification history for guests
- •Your notifications now show in the Notifications tab even without an account — saved to your device.
- •Sign in and your following + history move to your account.
Race results availability
- •Race Results are viewable as soon as the first run is under way, not only after the final heat.
Race comparison & timing polish
- •Race view shows how much a driver improved from training (best training vs best race run).
- •Dismiss a steward bulletin and it stays gone — the same message no longer keeps re-appearing.
- •Cleaner bulletin styling; tap a long event name to scroll it.
- •Slimmer, consistent position number in the timing list.
Notifications & status polish
- •Tidied the profile — your notification history now lives in one place: the Notifications tab.
- •A quiet session now shows “no activity — paused or finished” instead of wrongly announcing it ended.
Gap formatting
- •Large gaps now read as minutes:seconds (e.g. +5:25.000) instead of raw seconds — common in training where there are no re-runs.
Driver detail & comparisons
- •Mobile driver detail now matches desktop — overall and class positions side by side.
- •Your fastest run is highlighted in the run-by-run comparison.
- •Race view shows a run-by-run comparison and your progress between heats.
- •Removed the redundant purple time on the full leaderboard — the leader is always quickest.
Wording fix
- •Corrected a Croatian wording error in bulletins (“Obavijest”).
Live session fix
- •Reopening the app now takes you straight to the live session, not a finished heat.
Accounts & privacy
- •Create an account to keep your followed drivers and notification history in sync across devices.
- •Anything you followed as a guest now carries over automatically when you sign in.
- •Sign out or permanently delete your account and all its data, right from your profile.
- •New Privacy Policy, Terms of Service and a cookies notice.
HCW Live — live notifications & rebrand
- •Follow any driver — no account needed — and get a push the moment they cross the line, with their time and position.
- •Tap a notification to jump straight to that session with the driver already open.
- •Start list is the source of truth: only confirmed starters appear in timing and results.
- •Sessions flip to “live” and “finished” instantly, without reloading the page.
- •Pick any session from the sidebar from anywhere in the app.
- •Add HCW Live to your home screen to get notifications on iPhone.
- •Rebranded to HCW Live — the live-timing home of Hillclimb World.
Race-day hardening
- •Stability and accuracy fixes from the Kotor Trojica 2026 weekend.
- •More reliable live timing across long race days.
Standings & filters
- •Championship, group and class filters on the live timing view.
- •Championship standings that recompute as events complete.
Faster, leaner live feed
- •Much lighter live updates — smoother timing on slow or busy connections.
- •Driver-card redesign on mobile.