About RaceMarshal
Version
v4.1.0
Changelog
Version 4
2 versions · September 2026CurrentRaceMarshal gets ready to welcome other clubs. Before opening to a second community, the platform is checked end to end — its data, its security, what happens when two people act at the same moment — and every weakness found is measured before it is fixed. First result: passwords and keys no longer appear in the activity log.
v4.1.0 — 30 September 2026
- Errors are now reported to the administrator as they happen, instead of going unnoticed for weeks. They go to a service hosted in the European Union, without IP addresses or cookies, and private links are masked.
- A nightly, encrypted copy of the database is kept in the European Union for 30 days, and can be restored without touching the live site.
- Links in club news, announcements and race descriptions can no longer run code: web addresses, e-mail addresses and pages of the site stay clickable; any other link loses its address but keeps its text.
- Switching the language can no longer send you to another website.
- The assistant can no longer do more than the screens: adding a track layout, setting a circuit's location and creating or editing a DLC are reserved to administrators, and a verified circuit keeps its name.
- Referential, Images, Statistics and Settings now sit under a "Manage" menu: the organizers' header fits on one row on a 1280-pixel screen in every language, and no link hides behind the club picture.
v4.0.0 — 29 September 2026
- Saved passwords, e-mail sending keys and the club invite code no longer appear in the activity log: a change is still recorded, with who made it and when, but never its value.
- Activity log entries written before this version that contained one of them are masked when the update is installed.
Version 3
35 versions · September 2026RaceMarshal speaks MCP — the Model Context Protocol, the standard AI assistants use to reach an application. An organiser granted MCP access connects an assistant such as Claude, which then reads the calendar, publishes results, manages the reference data and creates championships. It never gains a right the organiser does not already have.
All 35 versions 35
v3.8.6 — 29 September 2026
- Deploying a new version no longer signs everyone out: the keys that protect sign-ins and saved passwords are now kept in the database.
- E-mail notifications work again once the e-mail sending credentials are entered again in Settings — after each update they could no longer be read.
- A saved password or key that can no longer be read is now reported in the activity log, and the health check turns red when it is the one used to send e-mails.
- A new installation refuses to start in production until an administrator password is configured.
v3.8.5 — 28 September 2026
- Every change to a partner banner — created, edited or deleted — is now recorded in the activity log, with what changed.
- A partner link that cannot be used is now refused with a message, instead of being silently dropped.
- The header logo hint now asks for a PNG or WebP file: SVG files were never accepted.
- An assistant can now give an admin a private link to drop a partner logo; the link works once, for 30 minutes, and only for whoever asked for it.
- The logo drop page checks the file like the banner screen does, shows the logo on the header background, and lets you try another file after a refusal.
- An assistant can now list, add and edit the club's partner banners, with the same checks as the admin screen; deleting one stays on the screen.
v3.8.4 — 27 September 2026
- Partner logos now sit inside the header, next to the season, instead of in stacked boxes above it.
- The logos keep their own colours; they need a transparent background, which the banner screen now asks for and previews on the header.
- Logos show only when they all fit, never some of them; they are hidden on phones.
- At most three header logos can be active over the same period: a fourth is refused with a message.
- On a phone, a home page with many partners no longer scrolls sideways, and the partner strip scrolls as intended.
v3.8.3 — 27 September 2026
- The home page now fits on about one screen on a computer and two on a phone. Every panel shows a few items and says how many are left, with a way to see them all.
- Your home page shows your own next races; the club calendar is still one click away.
- Long club news is cut to two lines, with « Read more » to open it in place.
- Championships on the home page are compact cards, only those running or coming up, with how many rounds are run and which one is next.
- A race is now named so you can recognise it: « Round 3 · Imola » rather than « Heat 1 ». A new round takes the name of its circuit.
- Championship cards count rounds rather than races, and a circuit is no longer written twice, as in « Laguna Seca · Laguna Seca ».
- Countdowns now read « 1 week » instead of « 1 weeks », and My races and the home page count your results the same way.
- The logo always brings you back to the home page, a home icon opens the menu, and the club's website is linked in the page footer.
v3.8.2 — 27 September 2026
- An assistant can now give a circuit its position — latitude and longitude — when creating it or afterwards, so its rounds get their weather forecast.
- Searching circuits from an assistant now shows which ones have no position yet, and therefore no forecast.
- Coordinates are always given as a pair from an assistant; half a position is refused rather than saved.
- On the referential screen, a coordinate typed in brackets such as (45) is now refused. It used to be saved as -45, sending the circuit to the other hemisphere without a word.
v3.8.1 — 27 September 2026
- Admins can now ask an assistant what happened on the site: search the activity journal by date, source, person or channel, and get a summary — how many entries per day, per person, per source.
- The journal answers « who did what », not « what broke »: it holds no application errors, and the tools say so rather than letting you look for something that is not there.
- A summary always says how many entries carry no value on the axis you asked for, so a partial picture never passes for a complete one.
- Reading the journal needs the Admin role, exactly like the screen — an organiser gets the same refusal there as here.
- A championship card no longer announces a race that has already passed as the « next round ».
- And when a round is still waiting without a date ahead, the card says so instead of claiming the championship is over.
- On the championship list, a race under way no longer reads « to prepare », and its championship is no longer sorted at the bottom with the finished ones.
- The coloured dot beside a notification is now treated as decoration by screen readers — the title next to it already says what happened, and hearing the colour announced added nothing.
v3.8.0 — 26 September 2026
- Track variants can now be described in full when you add them: name, length, and which DLC provides them, in one go instead of four separate edits.
- Attaching a DLC to a variant now marks it as paid content, so the icon that warns drivers they need to buy it actually appears. It used to have to be set by hand, and was sometimes forgotten.
- A length outside a sensible range is refused with a clear message, and a variant name already used on the same circuit is caught before saving.
- An assistant connected to your account can now create and describe track variants for you, and see which ones are still missing a length or a DLC.
- It can also rename an evening or move it to another circuit — and only that: dates, durations and settings are left exactly as they were. Drivers are told when a race changes circuit, and you are told how many.
- And it can declare a DLC, correct its store link, and list which ones are attached to nothing — the sign that a pack was added but never wired to its tracks.
v3.7.2 — 25 September 2026
- Club news: if an entry cannot be saved, the form now says why and keeps what you wrote. It used to close as though it had worked.
- And an error message no longer follows you to the next entry you open.
- New: an assistant connected to your account can now write, list and hide club news for you — the same three things you can do from the settings screen, and nothing more.
- It publishes under your name, dated today and unpinned. Pinning and dates stay on the screen, and anything it writes appears in the logs like your own edits.
v3.7.1 — 25 September 2026
- On a computer, the home page is no longer one long stack: club news and the calendar now sit side by side, with the championships across the full width underneath.
- If there is no news, or no race coming up, the remaining block takes the whole width instead of leaving a gap. On a phone nothing changes — everything still stacks.
v3.7.0 — 25 September 2026
- The home page is now the club's front window, and on a phone the app opens there instead of jumping to My Races. Your statistics come first, with a link to your races.
- The club calendar link now only appears where that page works, and the home page no longer flashes a “join the club” invitation at members while it loads.
- Visitors without an account are invited to join instead of seeing an empty dashboard. Everything else on the page stays open to them.
- Partners have their own strip under your statistics. It only moves when there are too many logos to fit, and stops when you point at one.
- The club's next races and its championships are both on the home page. On a phone, the championship cards slide sideways, one at a time.
- New: club news. Write announcements in Settings → Club news — title, text, an optional image and link — and pin the one that matters most.
- An entry leaves the home page on its own, one month after publication. Pinning does not keep an old one alive, and an empty block disappears.
- Smaller fixes: screen readers announce which simulator filter is selected, external links are checked before being shown, and two pale buttons — the calendar filters and the reconnect prompt — now read clearly.
v3.6.12 — 22 September 2026
- Races now start and finish on their own, at the time they were scheduled for. Until now nothing moved unless an organiser opened the admin screen.
- Signing up for a race that is already full now tells you so. It used to say “registration confirmed” and quietly put you on the waiting list.
- Joining a team no longer changes your place on the grid — accepting an invitation changes your car, not your position.
- Linking a driver the import did not recognise is easier: the likeliest members come first, and you can now pick any member, even one with a completely different name.
- Fixed: a driver could be given a second result in a race he had already finished. Statistics now flags any left over, since they count him twice.
v3.6.11 — 21 September 2026
- You can correct the car you signed up with — category and model — right up until the entry list is published. Until now the choice was final.
- Correcting it never costs you your place: confirmed stays confirmed, waiting stays waiting.
- Category limits now hold on championships with several heats. You could cap GT3 at twelve and end up with twenty.
- A driver who is already in stays in. Lowering a limit never pushes anyone onto the waiting list.
- Removing a category now respects the limits of the one its drivers move into — and if they would not all fit, nothing moves at all.
- The payments list now shows where a licence came from: granted automatically, or by an administrator, with the reason they gave.
- Members → Guests now lists the races holding results that belong to nobody, with a link to each. Those results are left out of the standings.
- Fixed: turning off the championship licence did nothing when no member held one — the dialog opened and its button would not answer.
v3.6.10 — 20 September 2026
- Status badges that were yellow or cyan now carry dark text instead of white. The colours are unchanged — only the text darkens, because on those two the white was barely readable: the "Scheduled" badge on every round measured 1.96 to 1 against a required 4.5.
- External-link icons and a few explanatory notes move off Bootstrap’s cyan, which was invisible on a card in both light and dark themes, onto a blue that was measured in each.
- Granting licences automatically is now a setting you turn on and off, in Settings → Licences. Until now it simply happened whenever no payment was set up — nobody had asked for it and nobody could stop it. It stays on unless you say otherwise.
- Turn it off and the screen tells you what it costs: with no payment set up, requests wait for someone to approve them by hand, and nothing obliges anyone to come. That is a fair choice to make — it just should not be a surprise.
- The option does not appear at all on clubs that take payment. Licences are paid for there, so granting them for free has no meaning.
- Turning it off never takes back a licence already granted. It governs the next ones.
- You can now cap how many drivers each category takes, not just the grid as a whole. Set it per class in the championship settings, leave a field empty for no limit. Twelve GT3 places on a grid of thirty is now something you can actually hold.
- A driver whose category is full goes on the waiting list even when the grid still has room, and the screen now tells him it is his class that is full — otherwise he reads "18 of 30" and cannot make sense of waiting.
- When someone withdraws, the place goes to the first driver waiting in that same category, not simply the first in the queue. A GT3 withdrawal used to be able to promote an LMP2 driver into a full LMP2 field.
- Lowering a cap below the drivers already in never removes anyone. They keep their place; only the next ones wait.
- Organisers and admins can still enter someone beyond a cap, as they already could for the grid.
- Entry lists show how full each capped category is — "12/12" — and leave the plain count where there is no cap.
v3.6.9 — 20 September 2026
- On clubs that have no payment set up, asking for a licence now grants it on the spot instead of leaving it waiting for an administrator to approve it one by one. Requests already waiting are validated the next time the driver asks. Nothing changes for clubs that do take payment: there, the payment journey still applies.
- Linking a guest driver now also enters him in the championships he raced, with the car from his most recent race — until now he appeared in the standings and nowhere in the entry list. A driver who changed car mid-season is entered with the latest one, and a member who had already entered keeps the car he declared.
- Merging two guest drivers together does not enter either of them: the entry list is for people taking part, and the entry follows once the driver is linked to a real member.
v3.6.8 — 19 September 2026
- Penalties you apply after publishing a race now survive a re-import. Until today, correcting a race — unpublish, import again, republish — quietly deleted them, and the claim that had justified them stayed marked as accepted with no sanction behind it.
- If the corrected file no longer contains a penalised driver, the import stops and names him rather than dropping his penalty. Revoke it or fix the file, then import again.
- Linking a guest driver no longer comes undone at the next import. The link stored the name the result file uses, and merging two entries was throwing that name away, so the guest reappeared the moment you replayed the file.
- Importing a file with no race session now explains itself instead of showing a raw internal code.
- Standings now say who is missing from them. A driver whose result is not linked to an account, or whose category the file named in a way we do not recognise, appeared in the results table and silently not in the standings — the only way to notice was to count the drivers by hand. The names are now listed under the table, with the reason and how many rounds are affected, and organisers get a link straight to the screen that fixes it.
- When matching an unrecognised driver, real accounts and guest drivers created by imports are no longer mixed in one alphabetical list. Accounts come first, guests in their own group — reassigning to a guest is still possible, it just no longer looks the same as picking a real account.
- After an import, drivers the platform did not recognise are now listed straight away, each with the members they might be — closest name first. Nothing is linked for you, even on an exact name match: two brothers, two similar handles, a driver taking someone else's name. Each row says how many results and rounds a link would move, because linking moves a driver's whole history and not just the race you are looking at.
- Fixed: linking a guest driver to an account that already had a profile was losing that driver's history instead of moving it. The races came out of the standings, the simulation login was dropped and the championship entry disappeared — silently, while the link itself looked like it had worked. If you linked anyone since the previous release, tell us: races detached this way do not come back on their own.
v3.6.7 — 19 September 2026
- Linking a guest driver to a member account now works when that account already holds a licence. It was being refused — and silently, because the refusal had no translation and showed a raw key instead of a sentence. Nearly every account held a licence after the previous release, so nearly every attempt failed.
- The link now merges the guest history INTO the member instead of replacing him. He keeps his licence, his name and his account; the guest entry disappears once its races, penalties and entries have moved across.
- The "Merge selected" button is gone. It acted on checkboxes while every other button on the screen acted on its own row, which read wrong. Merging is now done from the row that survives.
- The name as written in the result file is shown next to the cleaned one — it is what tells two near-identical rows apart when deciding whether to merge them.
- Every refusal on that screen now says something readable. Seven of them had no translation at all, in any language.
v3.6.6 — 18 September 2026
- The results table now marks drivers who are not linked to any account, and counts them above the table. The mark existed but had gone silent two weeks earlier: since imports started creating a stand-in driver for every unrecognised name, the condition it relied on could never be true again.
- Administrators only. Nothing changes on the public results page — a driver has no business discovering there that he has no account.
- Retirements are no longer highlighted in orange across the row. On an event open to non-members, being unlinked is the norm, and a signal carried by most of the table stops signalling anything.
- The Passive members screen can now show the drivers you have already linked, with the date and the account. Linking used to leave no trace at all: after nine of them, the screen looked exactly like it had before you started.
- Its counter still counts only what is left to do, so it goes down as you work.
- The badge next to a passive driver's name is now legible: it was being drawn at a contrast that fell well below the accessibility floor.
- Results now show the penalties the simulation handed out during the race, next to the pit count. A driver reading "3 stops" when he made four was counting two drive-through penalties among them — the file counts pit-lane passages, penalties included.
- Open a driver's lap times and each penalty appears on the lap it happened, with its reason: issued in amber, served in green, and in red when it was never served.
- The pit count itself is unchanged. It is what the simulation writes, and it is sometimes wrong — but reconstructing it ourselves agreed with the file only three times in four across 495 drivers, with no way to tell which was right. The penalty count explains the gap instead of papering over it.
v3.6.5 — 18 September 2026
- A driver who disconnects mid-race is no longer counted as having finished. Le Mans Ultimate and rFactor 2 record no finish status at all for them, and that absence was read as an arrival: the driver appeared in normal type among the finishers, and collected the finishing bonus that retirements do not get.
- The same gap hid every RaceRoom retirement, which that game labels differently again. Those too were counted as arrivals.
- Finishing is now decided by listing what an arrival looks like, rather than by listing the ways of retiring — so a status nobody has seen before counts as a retirement, which shows on screen, instead of as a phantom arrival that quietly hands out points.
- Retirements, disqualifications and non-starters are now shown the same way on the results table and in the standings. A non-starter used to be greyed out on one screen and not the other, from the same result.
v3.6.4 — 17 September 2026
- The setting that turns the championship licence on or off has moved to Settings → Licences. It shipped inside the Payments tab, which is hidden until online payment is signed off, so the setting could not be reached at all. It never belonged there either: licences exist in free mode too, where no price is involved.
- That checkbox now shows what is actually saved. It always appeared ticked, even for an organisation that had already turned the option off — the screen said the opposite of the data.
v3.6.3 — 16 September 2026
- An organisation can now choose not to offer the championship licence at all, keeping only the season licence. Turning it off converts every championship licence already held into a season licence for that championship's season — nobody is left outside a championship they had entered. Members whose licence was active are told about it; a request still awaiting validation stays a request, one level up.
- Turning it off is refused while a championship licence payment is still going through. Those payments settle or lapse within the hour, and disabling mid-payment would have taken the money without granting anything.
- Disabling cannot be undone, and the confirmation says so before you click — along with exactly how many members are affected, and in which of the three ways.
- A licence replaced this way now reads "Superseded" rather than "Revoked" or "Expired". It was neither a sanction nor an expiry, and calling it either would have misread your own history.
- Administrators can now tag members and filter the member list on those tags. Typing suggests the tags already in use, most-used first, so a vocabulary builds instead of scattering: typing "rookie" where "Rookie" exists attaches to the existing one rather than creating a near-duplicate. Selecting several tags narrows the list to members carrying all of them.
- Tags are visible to administrators only. They never appear on a public page, on a member's profile, or in a notification — and a check enforces that rather than trusting anyone to remember it.
- A tag nobody carries disappears from the suggestions on its own, so a typo added and removed leaves nothing behind and there is no vocabulary to administer.
- Anonymising a member now removes their tags along with their name. A tag is a note about a person; keeping it would contradict the one action in the product that cannot be undone.
v3.6.2 — 16 September 2026
- Your home page now lets you reach the races it shows you. Each upcoming race carries a "View event" button and each recent result a "View results" one. Until now both lists were text only: you could see your next five races and reach none of them — the page did not even load the information needed to build a link. Reported by a driver, who was right twice over: the results list below had the same problem and nobody had mentioned it.
- A driver's upcoming races are now filtered by organisation, like the results below them already were. Nothing was wrong with what you saw, since there is one organisation today; the missing filter only started to matter once those lines became links.
v3.6.1 — 16 September 2026
- The link to a race's live broadcast now says "Broadcast" on the schedule, instead of being a small symbol you had to recognise. It is the only named item on that line — everything beside it is a symbol — which is what makes it the one you see without looking for it. That was the intent behind making track grip and tyre blankets wordless the day before; only half of it had shipped.
- The broadcast link no longer uses a colour too pale to read: on a card it sat at barely a fifth of the contrast a small label needs, in both light and dark.
v3.6.0 — 16 September 2026
- A championship can now freeze the weather a set number of days before each evening, so what is announced stops moving as race day approaches. You choose the delay on the championship and can override it on a single evening; leaving it empty keeps today's behaviour, where the forecast stays live until the race. A frozen evening still shows its two numbers — 18 °C and 40 % — with a discreet "frozen on 09/10", so nobody mistakes a weather that no longer moves for a broken one. Freezing takes no right away: a weather you set by hand still wins and is never overwritten, and moving an evening to another date clears its frozen weather so it can be taken again for the new date. Delays beyond nine days are refused when you save — the forecast does not reach that far.
- When one heat of an evening announces its own weather — the night heat of a doubled endurance evening, say — it now shows on the schedule, beside that heat's name. Heats that follow their evening show nothing extra, so a single-heat evening looks exactly as it did.
- A championship can now announce its track grip and whether tyre blankets are allowed — the two settings that decide whether changing tyres is worth it — and either can be overridden on a single evening or a single heat. A doubled evening running day then night can announce a different track for each. On a schedule card they show as a coloured symbol with no text: grip runs from green for a fresh track through to the darkest shade for a rubbered-in one, and the blanket symbol is red when they are allowed, blue when they are not. Hover or a screen reader gives the words, and the full wording stays on the event page.
- Tyre blankets are now a simple yes or no on a championship, with a tick box instead of a three-way list. Championships created before today will show them as disabled until you say otherwise.
- Thirteen places put white text on a colour too light to read it comfortably — the main button among them, and the badges counting heats, pending items, official entry lists and unread notifications. Those colours are now deeper, and coloured words such as a confirmed status or a penalty notice use a shade picked for reading rather than the one used behind white text. The change is visible: your oranges, greens and reds have all moved a shade wherever they carry text.
- The link to a race's live broadcast is now easy to spot on the schedule. It sat at the smallest size on the card, tucked in beside the lap durations, and on a phone it was smaller than a fingertip — a driver who misses the stream does not get it back. It is now the only named item on that line, which is what makes it the one you notice.
- Browser tabs now carry the name of the page you are on. Twenty-eight screens out of thirty-five showed a blank tab, including the home page, the championship list and the hall of fame — the very pages drivers send each other. A bookmark saved from them had no name either.
- Your browser is now told to keep using a secure connection to RaceMarshal on its own, and the background task that prepares next season ahead of time shows a readable name on the administration screen instead of its internal code name.
v3.5.0 — 14 September 2026
- An assistant can now plan a season for you: schedule an evening with its first heat, then add further heats to it. Drivers already confirmed for the evening are entered for the new heat and told about it, exactly as they are from the screen.
- Times given to an assistant must carry no time zone. "20:00Z" read as local time would move a race by two hours and nobody would notice until race day, so it is refused rather than guessed — as is a time with no date at all.
- Scheduling, editing or deleting an evening now checks that it belongs to the championship you have open, and an assistant can no longer be pointed at another organisation's circuit. None of it was reachable through the screen, which only ever offered your own — but the screen was the only thing enforcing it.
- RaceMarshal keeps a record of who did what. Nothing checked that the record was actually written: deleting the entry for anonymising a member — the one action that cannot be undone — left every single test passing. That record is now guarded, down to what the operation touched and to staying silent when it fails, and no new action can ship without someone noticing its own record is missing.
- Creating, editing and deleting evenings behave exactly as before. What changed is where that logic lives: outside the screen, so an assistant will be able to schedule a season for you without a second version of the rules existing.
- "An evening starts when its first heat starts" was written in two places and had already produced two wrong start times on public pages. It is now written once.
- The rule that decides when a championship's schedule freezes was written in three places — two screens and the assistant channel. It is now written once, and tested.
- A screen that grows too large now stops a pull request instead of being reported into a nightly page nobody opens — which is how one of them quietly grew by half again.
v3.4.6 — 14 September 2026
- Importing a results file works exactly as before — the code behind it moved out of the screen, so an assistant will be able to run the same import later without a second version of it existing.
- An assistant can now import a race for you. It hands you a link, you drop the file on that page, and it takes over — reading the file itself was never an option, a race file is far too large to fit in a conversation.
- The link lasts thirty minutes, works once, and only for you. Nothing is kept afterwards: the file is dropped as soon as it has been imported.
v3.4.5 — 13 September 2026
- The best lap of a driver now says so. A small "Best" badge replaces the asterisk, the time itself stands out, and the whole row is tinted — where before you had to know what the star meant, and the tint was barely visible in dark mode.
- The results table follows the same treatment, so both screens still say it the same way.
v3.4.4 — 13 September 2026
- The small grey counters — members per tab, versions behind a fold, required DLCs — are readable again in dark mode, and look like badges rather than grey text floating on the card. One of them sat at 2.8 against a 4.5 minimum.
- The same counters were just as invisible in light mode, which nobody had measured. Both themes are fixed.
- Quiet backgrounds stay quiet: drop zones, table headers and the calendar's weekday band gained readable text without gaining a colour that would draw the eye.
v3.4.3 — 13 September 2026
- When a circuit cannot be created or renamed, the screen now says which of the five reasons it is — a name too long says how long is too long, a name already taken says so. Four of them used to come out as "a name is required".
- Circuits follow the same rules whether you act from the screen or from an assistant. They were two copies of the same rule, which is one copy too many.
v3.4.2 — 13 September 2026
- Your activity log stays about what changed. An assistant browsing your calendar leaves nothing behind; only what it modifies is recorded, under your name. That was already how it worked — it is now a guarantee the tests hold, not an accident.
v3.4.1 — 13 September 2026
- This page fits on a phone again. The licence text stretched it to twice a phone's width, which cut off everything to the right — the whole page, not just the licence.
- Screen readers now hear the version history grouped by major version, the way it looks on screen. The grouping existed only visually; read aloud, the page was still one flat list.
v3.4.0 — 13 September 2026
- An AI assistant can now create a championship over MCP. It starts as a draft: nothing is visible or open for entries until you publish it from the screen.
- The creation rules — driver limits, team size, settings that only apply to certain modes — are now shared between the setup wizard and the MCP tools. They were verified nowhere.
- This page's version history is now grouped by major version: a summary you read at a glance, the full detail one click away. It reads in English throughout, where it used to switch language halfway down.
v3.3.0 — 12 September 2026
- When an AI assistant lists a championship's race nights, it now gets their heats too. Without this it could not publish: it received a race night's id where the tool expected a heat's, with nothing to bridge the two.
- The MCP vocabulary now follows the site's — a race night contains heats, and it is the heat that carries results.
- An AI assistant can now manage the reference data: create, rename and archive car classes, car models and circuits. Irreversible actions — merging, deleting — stay on the screen.
- Archiving a car class files its models away with it; restoring it does not bring them all back at once. This rule lived inside one screen's code; it is now shared and verified.
- The messages MCP returns when it refuses something are translated into all four languages. Eight of them still showed a technical identifier.
v3.2.0 — 12 September 2026
- An AI assistant can now publish a heat's results over MCP. It stops and explains as soon as a decision is yours to make — unrecognised car class, relay without a team, heat not yet run — telling you how many results are affected.
- It publishes through the same path as the button on screen: what it refuses, the screen refuses too, and the other way round.
v3.1.0 — 12 September 2026
- When an AI assistant is refused an action, it now explains why — insufficient rights, empty search, unknown simulation — instead of reporting a technical error with no reason.
- This flaw only showed in real conditions: the refusal worked, but the message was lost between the server and the assistant.
v3.0.0 — 11 September 2026
- A season's start date can now be edited, like its end date. Pushing it past a race night is refused, and the screen names the race nights concerned.
- A season that holds nothing — no championship, no race night, no licence — can be deleted. Otherwise the button stays greyed out, saying what holds it back.
- The seasons screen now announces a season that will not be created automatically because another one already covers its dates. Nothing used to signal it.
- The tyre icon on event cards no longer looks like a cart wheel: it is now an in-house drawing, which follows the dark theme too.
- An administrator can grant an organizer MCP access, the first step towards driving RaceMarshal from an AI assistant. It opens a channel and grants no extra right; it has no effect on a member account.
- The log now says by which route each action arrived — from the site or over MCP — while still showing, for a given person, everything they did.
- An organizer granted MCP access creates their own tokens from their profile, names them, and revokes them whenever they want. A token is shown only once.
- An AI assistant can now connect to RaceMarshal over MCP and browse seasons, championships, race nights, circuits and car classes. It cannot change anything yet — the actions come next.
- Removing someone's MCP access closes the channel immediately, from the very next action: there is no delay and no extra token to revoke.
Version 2
12 versions · September 2026A championship can run without a single driver creating an account: the results files are enough. Multiclass races are ranked by class, and every race can be read lap by lap — times, sectors, how the positions moved.
All 12 versions 12
v2.2.0 — 11 September 2026
- The end of a season no longer prevents scheduling a race night: a championship can run past it. The screen says what changes — claim deadlines, licences — instead of simply refusing.
- A season's end date can now be changed. Extending it reactivates the licences its end had expired; shortening it is refused if race nights would fall outside, and the screen names what blocks it.
- The next season is created automatically six months before the current one ends, without being activated — so nothing is locked in.
- Activating another season now warns you if championships in progress would become read-only, and which ones.
- The reference data flags car classes that look alike — \u0022LMP2\u0022 and \u0022LMP2 ELMS\u0022 — and asks whether they are the same thing, showing the cars on each side to settle it at a glance.
- Answering \u0022these are two different classes\u0022 is remembered: the question does not come back. A collapsed section lists these decisions and lets you revisit them.
- Two car classes, or two duplicate cars, can now be merged — by organizers, without waiting for an administrator. The screen shows which one disappears and asks you to type its name before confirming.
- A car imported with an unknown class is no longer filed into a catch-all: the import says so and asks you to create the class first. The import summary finally appears — it used to stay hidden behind an endless \u0022Loading…\u0022.
v2.1.0 — 9 September 2026
- A \u0022File a claim\u0022 button now appears directly on a finished heat's card, with the deadline shown.
- The default claim window moves to 6 days for new championships; those in progress keep theirs.
- The logs screen responds faster: filtering by author no longer scans the whole history.
- Archiving a car class no longer makes the entries and results attached to it disappear: they stay visible, followed by \u0022(archived)\u0022.
- The \u0022(archived)\u0022 note now also appears in My races, the Hall of Fame and the entry list.
- Audit of the data foundation: structure, indexes and access paths were reviewed. Nothing to fix on typing or read performance.
- A known flaw is now documented and watched: archiving a car class still in use hides the entries attached to it. Nothing is lost — unarchiving restores everything — and the permanent fix needs a decision.
v2.0.9 — 9 September 2026
- On shared achievements, the display order no longer varies between visits — and it is now the same in administration and on the public page.
- The same achievement can no longer be awarded twice to the same driver: existing duplicates are cleaned up, and a manually awarded distinction is no longer overwritten by automatic detection.
- On the position chart, the end-of-line label no longer overflows the frame, whatever the language.
- The chart is now usable with a screen reader: every driver's name is announced in full, even when the display has to shorten it.
v2.0.8 — 9 September 2026
- The position chart shows each driver's name on the left, in front of their line and in grid order: no more going back and forth with the colour key.
- Clicking a name brings its line forward — the row of buttons above the chart no longer has a purpose and has gone.
- When several drivers share the same achievement — the biggest comeback, tied, for instance — they appear on a single line instead of one each.
- On a phone, results now show as a table straight away: the chart, hard to read on a small screen, is no longer offered there.
- The chart's lines stay crisp whatever the screen size.
- The driver selection buttons are easier to tap.
v2.0.7 — 8 September 2026
- Fixed the position chart: lines were drawn as blocks of colour instead of strokes.
v2.0.6 — 8 September 2026
- On the position chart, each driver now has their own colour and their own line style, even without being selected: you can follow one path from end to end, including where lines cross.
- The driver buttons above the chart carry that same stroke: you match a name to its line at a glance.
- On an event page, required add-ons have their own tab with the number you need, and the \u0022Heats\u0022 tab is now called \u0022Race nights\u0022.
- A heat card opens with a click anywhere on the card, and its button reads \u0022Full results\u0022 instead of \u0022View\u0022.
- A race night with a single heat takes the full width, and the podium lays its classes side by side: the card fits in four lines instead of seven.
- The \u0022Confirmed\u0022 badge no longer shows on a heat already run: you appear in the results just above. A withdrawal or an absence is still shown.
v2.0.5 — 8 September 2026
- A race's results now show either as a table or as a chart, your choice.
- The chart shows how positions changed lap after lap, one line per driver: you see at a glance who moved up and who dropped back.
- Select one or more drivers to bring out their path, with their name at the end of the line. The selection is the same one as the lap expansion.
- The positions shown are those of the class, not the overall order: in a multi-class race, the GT3 leader really is at the top of the chart.
- A retirement breaks the line and shows which lap it happened on.
v2.0.4 — 8 September 2026
- Click a driver in a race's results: their row unfolds and shows every lap, with each sector time and their position at the end of the lap.
- Their best lap is highlighted there, as it is in the results table.
- Open two drivers at once to compare them lap by lap — that is what the expansion is for.
- An unfinished lap, a pit stop or a sector the file does not provide show as a dash: nothing is guessed or recomputed.
- Not every simulation provides sector times. When they are missing, the page says so instead of leaving empty columns.
- Races imported before this version have no lap detail: re-import their file to get it.
v2.0.3 — 6 September 2026
- Results import: when an archived car class carried the name written in the file — \u0022GT3\u0022 against \u0022LMGT3\u0022 — the import attached itself to it and drivers ended up with no class. Archived classes are now ignored in favour of the known match.
- On import, unrecognised cars and classes arrive with a suggestion: the closest match in the reference data, or creation for a brand-new car — the reason is shown, and nothing is ever chosen for you on a class.
v2.0.2 — 6 September 2026
- In a multi-class race, your result is the one for your class: the GT3 winner sees \u0022P1 GT3\u0022, not the place they held behind the Hypercars. My races, the home page and your best result all say the same thing.
- The podium shown under each heat is by class too: drivers in the slower classes finally appear on it.
- Races from before this fix keep their overall ranking as long as they have no class position — nothing is lost.
- When a race night's weather does not show, the page now says why: it announces the date from which the forecast will be available, instead of leaving a blank.
- Organizers, and only they, are warned when a circuit has no coordinates — with the link to fill them in — or when the forecast service is briefly unreachable.
- The public entry list was unreadable for visitors whose device is in light theme: the text showed white on a light background. Team names, drivers, classes, status bar and identity preview are legible again in both themes.
- Circuit coordinates added to the catalogue now reach simulations already installed on their own: the weather can show without an administrator having to reload anything.
- In dark theme, several blocks stayed white with light text, and so unreadable: team cards, detail sections, invitation previews, claims, the revocation popover and payment keys display correctly again.
v2.0.1 — 5 September 2026
- The button to record results is present on every heat whatever its state, and publishing a championship makes it appear without reloading the page.
- A race night date that is empty or earlier than the season start is refused instead of being saved in the year 0001; a race night already mis-dated can still be corrected.
- Lists of required add-on content show collapsed, with their count.
- When a class in the results file is not recognised, the drivers concerned are no longer ranked at random among themselves: they score no points, the screen names the classes at fault, and publishing asks for confirmation.
- Class names specific to each game — \u0022GT3\u0022 for LMGT3, \u0022Hyper\u0022 for Hypercar — are recognised automatically again, without renaming what you display. Simulations you already installed benefit without reloading anything.
- The Le Mans Ultimate catalogue follows the 2026 season: cars the game writes under another name are recognised, and the Ferrari 296 LMGT3 Evo joins the reference data.
- The weather is back on a race night's page, above the race conditions, where it had disappeared in v1.27.8.
v2.0.0 — 4 September 2026
- A championship can now live entirely from results files: nobody signs up, nobody logs in, and the standings are correct.
- Drivers present in a file but without an account appear in the standings under their name, bonuses and penalties included.
- Results, standings and conditions for upcoming race nights stay visible without creating an account.
- When a driver creates their account after racing, an administrator links them and they get their whole history back.
- Two spellings of the same driver are merged from the administration screen, without touching the database.
- New \u0022Passive\u0022 tab in member management, to find these drivers and tidy up.
Version 1
97 versions · April 2026 → September 2026Five months of construction, from the first public page to a complete platform: championships and registrations, results and standings, teams and endurance, licences and payments, notifications, a reference catalogue of circuits and cars.
All 97 versions 97
v1.27.9 — 2 September 2026
- When a simulation has more than two organizers, a penalty is only applied if two of them agree. A single opinion leaves the claim open and does not touch the standings.
- The second organizer sees who ruled and what they proposed, but nothing is pre-ticked: it is a second look, not a rubber stamp.
- If they disagree, the first organizer is told so they can revisit their opinion, and the others are called in to settle it.
- A finished championship no longer shows \u0022To prepare\u0022: there is no race night left to prepare.
- A finished championship's card shows its podium — the top three in each class that raced, penalties included.
- In \u0022My events\u0022, finished championships are announced by a subheading, below those upcoming and in progress.
- The news feed standings now break ties the same way the championship page does: on equal points and wins, podiums then name.
v1.27.8 — 31 August 2026
- A championship page gets to the point: the next race night — or the one under way — now fits in a single panel instead of five scattered blocks.
- During a race, the page talks about that race only. The next race night is no longer announced in the middle of it.
- As soon as a result is published, the page opens straight on the standings.
- Championship details (simulation, season, number of race nights, entries, points scheme) move up under the title, and the entry count leads to the list.
- On a heat's results, the claim deadline is shown — before and after it expires. The button used to vanish with no explanation.
v1.27.7 — 31 August 2026
- Entering a championship now happens at the top of the page, right under its title. It sat under the next race night's card, which made it look like you were entering a single heat.
- The screen now says what entering commits you to: \u0022your entry covers all 8 race nights of the season\u0022.
- Once entered, the block collapses to a single line. Withdrawing and moving to a season licence stay available behind \u0022Manage my entry\u0022.
- A visitor who is not signed in is invited to sign in, and comes back to the championship afterwards.
- A custom livery is now only offered on events that accept one, at the organizer's choice.
v1.27.6 — 30 August 2026
- After changing the add-on attached to a circuit, the championships concerned still showed the old one for a few minutes. The correction is now visible immediately.
- A race night's schedule showed a time one to two hours off: a race night at 8pm was announced at 6pm. Times now follow your organisation's time zone, on the home page as on the race night page.
- Same fix for the profile's last sign-in date and a claim's resolution date.
v1.27.5 — 30 August 2026
- Add-on content can finally be managed: a dedicated tab in the reference data lists them by simulation, corrects a name or a link, and deletes those no longer in use.
- Before deleting an add-on, the application offers to move its circuits and cars to another one, or to detach them — nothing is lost along the way.
- An add-on can now be created straight from a circuit's row: it attaches itself at once, without leaving the screen.
- The \u0022Content\u0022 column says what each add-on brings, which makes visible the 18 add-ons that were attached to nothing.
- A championship's banner can finally be replaced or removed from its settings, and not only chosen at creation.
- In the image library, an image's usage count was badly under-reported: a championship poster, a team logo or a driver livery looked unused and could be deleted by mistake. The count is now complete.
- The library names the eight image types correctly and lets you filter on each of them, instead of two.
v1.27.4 — 30 August 2026
- The Events page is organised into three tabs: \u0022My events\u0022, \u0022In progress\u0022 and \u0022Finished\u0022. It now opens on what concerns you, and finished championships no longer mix with those still to race.
v1.27.3 — 30 August 2026
- Fixed a flaw that froze a championship's administration pages: the screen stayed up but stopped responding to clicks. No data was lost.
- Administration table rows display in one piece again: a misalignment left a gap under some columns.
- End-to-end tests are now replayed in full before every release.
v1.27.2 — 29 August 2026
- When entering, only the car models the organizer allows are now offered. The whole class used to be, including cars they had ruled out.
- The entry form is lighter: the livery moves behind a link, and opens straight away if you already have one.
- Streams: channels already used are offered in one click, and duplicating a race night now keeps its streams.
v1.27.1 — 29 August 2026
- A race night now shows the time of its first heat. Editing a later heat no longer shifts the whole race night, which could then announce a wrong start time on the calendar.
- On a championship in progress, the buttons to edit a race night stay visible and greyed out with their reason, instead of disappearing.
v1.27.0 — 29 August 2026
- A race night's circuit can now be changed on a published championship, as long as no heat has started. No more going back to draft.
- Entered drivers are told about a circuit change, as they already were about a date change.
- Race nights and heats can finally be told apart at a glance, and a heat can no longer be scheduled far from its race night.
v1.26.7 — 28 August 2026
- Two new circuits available for Le Mans Ultimate: Daytona International Speedway and WeatherTech Raceway Laguna Seca, from the \u0022US Track Pass\u0022. They appear when creating a heat, and the pack is flagged automatically in the prerequisites of a championship that uses them.
v1.26.6 — 16 August 2026
- Technical fix on the administration action history: older entries, written before an internal rename in April, could stop the page from displaying. No visible change in use.
v1.26.5 — 9 August 2026
- The site loads a little faster on mobile: country flags are now served by RaceMarshal itself instead of an external site, which removes a wait on every page load.
- Otherwise an internal hardening release: the automatic safeguards that check, on every code change, that each screen stays covered by tests and that pages stay fast.
v1.26.4 — 8 August 2026
- Administration → Members: new \u0022Anonymise\u0022 button for a member who wants to leave the site. Their name, e-mail and avatar disappear everywhere: profile, race results, entry lists.
- Their results, points and past standings stay intact. A driver leaving never rewrites the club's sporting history.
- If they come back one day via Steam, they get their whole history back — but will have to enter their name again, as the old one is not kept.
- A detailed confirmation recalls what disappears, what is kept, and that the original name cannot be recovered.
- Security hardening: the page shown when you lack the rights now explains the refusal, instead of showing a \u0022page not found\u0022 error.
- The site now refuses to be displayed inside another site, and no longer allows access to the camera, microphone or location.
- Repeated sign-in attempts are capped.
v1.26.3 — 8 August 2026
- Championship page: the "Enter team" button now disables itself while saving. Before, a second click was ignored with no feedback at all.
- Administration → Members: the search bar finally carries a label, like the one on the circuits referential. Better readability, and the tool is now announced to screen readers.
v1.26.2 — 8 August 2026
- Settings → Logs: new "Background tasks" tab showing at a glance whether the automatic jobs are running (season licence expiry, payment cleanup, entry lists…), with the result of the last run and a button to run it again.
- Each task is described in plain language: what it does, and after how long.
v1.26.1 — 8 August 2026
- Internal hardening: test coverage extended over season licence expiry and payment settings. No visible change.
v1.26.0 — 8 August 2026
- Settings → Payment: HelloAsso and Pay Asso are listed, greyed out, marked "Coming soon".
- Licence payment through Pay Asso (Crédit Mutuel / CIC) is ready — it goes live once the bank validates.
- In the meantime, licences are paid directly to the organiser.
- Security updates to third-party components.
v1.25.10 — 4 June 2026
- Admin referential → Circuits tab: new live search bar to filter the list instantly by circuit name or by the name of one of its layouts. A × button appears to clear the search in one click, and the counter above updates in real time.
- Admin referential → Circuits tab: latitude/longitude fields now accept a comma (46,55) as well as a dot (46.55). No more surprises depending on your keyboard.
- Admin referential → Circuits tab: an explicit error message when a coordinate is invalid (before, the value was silently ignored, which could hide the weather on event cards).
- Admin referential → Circuits tab: new "Incomplete coordinates" badge on circuits missing a latitude or a longitude, so you can spot them at a glance and fill in the data.
v1.25.9 — 3 June 2026
- Fixed the required-DLC calculation on some older championships: the list now correctly reflects the selected classes. Previously, cars from deselected classes were sometimes silently included, padding the DLC list with packs unrelated to the championship. The cleanup is transparent: the next time you save the championship settings (without changing anything else), the selection updates itself.
- Class/car selector (creation wizard and settings): ticking a new class now switches the model list to that class automatically — no more clicking the tab by hand to see the associated cars.
- Class/car selector (championship settings): you can now untick everything while editing. A warning appears and the "Save" button stays disabled until at least one class is selected (consistent with the creation wizard).
v1.25.8 — 31 May 2026
- Championship page and entry list page: required DLCs are now split into two distinct collapsible sections — "Mandatory DLCs" (the circuits) and "DLCs depending on your car" (the allowed models). The mandatory section is open by default; the car-dependent one opens in a click. No more messy list of 7 to 15 items.
- Visual identification of the two sections: orange band on the left for the mandatory ones, blue band for the car-dependent ones. Faster to scan at a glance.
v1.25.7 — 28 May 2026
- Admin "Registrations" page: withdrawals are now visually distinguished by who triggered them — a grey "Withdrawn (self)" badge when it was the driver, an orange "Withdrawn (organiser)" badge when you removed the driver yourself. Lets you spot manual removals at a glance when reviewing a session.
- Internal rework of the organiser-side driver removal flow: it now goes through the same centralised service as a driver withdrawal (guaranteed atomicity, automatic waitlist promotion, consistent notifications).
- MyRaces — "Re-register" button: a clear error message now appears when one or more heats of the race night cannot be re-entered (race full and no waitlist). Before, the click looked like it did nothing.
- Championship page, "Heats" tab — "Withdraw" button: now opens the same confirmation dialog as MyRaces (before: a direct click, with no safety net). Prevents accidental withdrawals from a thumb on mobile.
v1.25.6 — 24 May 2026
- Third level of race-condition override: every heat of a race night can now carry its own conditions (weather, duration, time speed, tyres, fuel). Use case: doubled endurance nights (sunny day + stormy night) with distinct conditions per heat.
- Orange "Conditions for this heat" panel visible when editing an existing heat, right under the green "Conditions for this race night" panel. Left empty, the race night's conditions apply automatically.
- "Reset all" button on both the race-night and the heat side: one click plus confirmation to put every override of that level back to inherited.
- Three-level breadcrumb when editing a heat (Championship › Race night of DD/MM › Heat N) so you always know which level you are editing.
- Weather grouped into the "Conditions for this race night" block with the other fields (before, the weather selector sat apart). Everything is uniform now.
- Technical fix: when creating a new race night, the overrides you typed (tyres, wear, fuel, in-game time) are now properly saved. Before, they could be silently ignored.
v1.25.5 — 24 May 2026
- Editing a race night: changing a race condition (duration, weather, tyres, time speed…) now stays local to that race night and no longer affects the championship. Before, a change could travel up to the championship and hit every other race night.
- Clear visual cue for the level you are editing: blue background for the championship's global conditions, green background for a race night's. No more confusion between the two screens.
- Every override field now shows an "inherited" or "custom" badge plus a "Reset" button to go back to inheriting from the championship.
- Typing a value identical to the championship's no longer resets the field to inherited automatically — a behaviour that caused confusion. Use the "Reset" button to go back to inherited.
- Technical groundwork for the third "heat" level (individual override for one heat inside a doubled endurance night). The dedicated interface is coming soon.
v1.25.4 — 22 May 2026
- Action buttons right inside the push notification: on licence requests, tenant access requests, confirmation reminders and waitlist promotions, two clickable buttons now appear on the system notification ("Approve" / "Reject", "Grant" / "Deny", "Confirm" / "Withdraw", "Accept" / "Decline").
- No need to open the app any more: the action runs in one click straight from the notification, wherever you are on your phone or your PC.
- On iPhone and iPad, action buttons are not supported (an Apple limitation) — the notification shows normally and a click opens the app to act.
- Security: actions are signed and expire after 15 minutes. If another admin has already handled the request, you get an "Already handled" message.
- This version closes the v1.25 series dedicated to push notifications.
v1.25.3 — 22 May 2026
- Push notifications offered automatically after your first sign-in: a small invitation appears at the bottom of your screen with a direct "Enable" button. No more hunting for the option in your profile.
- Invitation banner on the home page for users who already signed up: a discreet reminder to enable notifications, dismissible in one click and gone for good once ignored.
- The invitation only shows if your browser supports notifications and you haven't enabled them on this device yet.
v1.25.2 — 22 May 2026
- Push notifications on iPhone / iPad: a step-by-step installation guide (page "/help/install-pwa") explains how to add RaceMarshal to the iOS home screen to enable notifications.
- Automatic platform detection: if you browse RaceMarshal from an iPhone or an iPad without having installed the app, a help message appears in your profile with a direct link to the guide.
- Users on iOS older than 16.4 are told that push notifications require a system update.
v1.25.1 — 22 May 2026
- Licence approval from your phone: the admin "Licences" page is now usable on mobile. After a "Licence request" push notification, you can approve or reject straight from your phone without opening the computer.
- Tenant access approval from your phone: same for the admin "Members → Pending" page. Grant or deny access requests directly from your phone.
- Larger action buttons on mobile (44 pixels minimum) for comfortable touch use.
v1.25.0 — 22 May 2026
- Push notifications: turn on the application's notifications straight on your phone or computer, even when the app is closed. Go to your profile, "Push notifications" section, and click "Enable on this device". Multi-device: you can enable several phones / PCs independently.
- When an admin approves a licence, when a member is promoted off a waitlist, when a race night is postponed, or on any other important event — you get a system notification on your phone's lock screen, and a click opens the relevant page directly.
- On iPhone: notifications require installing the application by adding it to the home screen (an Apple limitation). An installation guide is coming soon.
- First delivery of the v1.25 series — more push improvements (admin on mobile, iPhone guide, action buttons straight on the notification) are coming in the next versions.
v1.24.2 — 21 May 2026
- Licence request: tenant admins now get a notification as soon as a driver requests a season or a championship licence. Before, the request sat in /admin/settings with no alert until an admin happened to open the Licences tab.
- Calendar: championships from the same simulation are now visually distinguished by three levels of side border (thick / medium / thin, by creation order), while keeping the background colour that identifies the simulation. Open race nights (one-off events) keep their simulation's background and carry a purple border plus an "OPEN" badge so you spot them immediately.
- Calendar: dark mode is now fully supported (before: a light palette forced even in system dark mode). Contrasts tuned for comfortable reading in both themes.
v1.24.1 — 20 May 2026
- Race conditions: fixed the Save button. Your changes to time speed, weather, tyre count, wear, fuel consumption and in-game start time are now properly saved.
- Race conditions: the new values show immediately on the championship cards and on the detail page (before: only the initial default values were displayed, even after a change).
- Layout: vertical alignment of the "Tyres", "Wear", "Consumption" and "In-game start time" fields in the settings form.
v1.24.0 — 20 May 2026
- Race conditions: 4 new per-championship settings (tyre count, tyre wear, fuel consumption, in-game start time), each overridable per race night. Drivers see them at a glance on the cards and the detail page.
- Championship card display: a new summary line "🕐 14:00 · ⏩ ×1 · 🛞 ∞ · ≈ ×1 · ⛽ ×1" condensing the 5 conditions. The ∞ symbol appears when tyres are unlimited.
- Event detail page: new "Race conditions" panel on 4 pages (summary, championship detail, public results, admin results).
- Card layout: the date of the next heat now fits on a single line, "NEXT HEAT ON 21/04/2026 AT 22:00" (more compact).
- Adaptive layout: championship cards pick 1, 2 or 3 columns by themselves depending on the room available — always readable, never squashed.
v1.23.4 — 18 May 2026
- Confirmation message after duplicating a race night: it now disappears on its own after 3 seconds (before, the green message stayed until the page was reloaded). Same behaviour for regenerating the list and for rescheduling a race night.
- Recovering a championship cancelled by mistake: new "Restore as draft" button on the championship management page. Existing registrations and results are kept; the championship becomes invisible to Members again until it is published anew.
- Recovering a published championship with no results: you can now go back to draft to fix a typo or a settings mistake, as long as no heat has published results. The button is disabled with an explanation when results exist.
- Auditability: every restore-to-draft is recorded in the admin log (who, when, from which status).
v1.23.3 — 18 May 2026
- Event times: fixed a 2-hour offset. You type 8 pm, the application shows 8 pm everywhere (before: 6 pm shown everywhere).
- Editing a race night: the form pre-fills the correct time (before: a 2-hour offset that drifted further on every save).
- Adding a heat: the suggested time (+1h) is now consistent with the previous heat's.
- Uniform display: My Races, calendar, public events and postponement notifications all show times in French local time (before: raw UTC in places).
- Championship creation: new "Select all" / "Deselect all" buttons on the class and car lists. For multi-class LMU: 1 click instead of 50+.
v1.23.2 — 16 May 2026
- Penalties: now applied to the championship standings (instead of the single heat). A penalised driver sees their cumulative total drop even if they finish last — a negative total is possible.
- Championship standings: new "Penalties" column, shown in red when the driver has active sanctions.
- Penalty application dialog: the sanction list is now sorted alphabetically (instead of by value). Easier to search when the catalogue is long.
- Race bonuses preserved: bonus points are no longer overwritten when a penalty is applied (fixes a latent bug).
v1.23.1 — 16 May 2026
- Navigation bar: decorative LMP car image on the right (desktop only) to reinforce the platform's visual identity.
v1.23.0 — 15 May 2026
- Under-the-hood improvements — performance, code quality, accessibility (screen readers) on the heat management page.
v1.22.0 — 15 May 2026
- Car classes page (admin): usage counter on every model (registrations + attached cars) — a clear signal of when a model can be deleted safely.
- Visual ✓ confirmation after each inline save (order, colour, Paid/DLC status).
- Replacement class selector: each class now shows its coloured logo — faster to scan.
- "Reset colour" button with a clear icon (rotation) instead of the old ambiguous "×", plus a tooltip on hover.
- Logo editing: the dialog now opens near the button you clicked (auto-scrolling if needed). No more dialog lost at the bottom of the page.
- The "Paid DLC" pictogram only shows when the Paid toggle is on (visually consistent).
- Every confirmation dialog in the referential is accessible to screen readers.
v1.20.9 — 14 May 2026
- Publishing results: clicking Unpublish now shows a clear message (success or error) instead of a silent block that needed a refresh.
v1.20.8 — 14 May 2026
- Dark mode: fixed the contrast of "unread" notifications in the bell dropdown (the text used to be unreadable on the pastel blue background).
- Paddock — race results by class: on multi-class championships (WEC style: Hypercar / LMP2 / LMGT3 / LMGTE), the "latest race results" card is now broken down into one card per class. No more unreadable mixed top 5 across all classes.
v1.20.6 — 14 May 2026
- Member scope hardening: protections finalised on the profile, races, teams and notifications (a single item stays deferred — pagination of championship standings, which needs a deeper rework).
- Team detail: the 5 confirmation dialogs (kick, transfer, leave, remove, delete) are now homogeneous (same wording, disabled while processing, accessible to screen readers).
- Team creation / editing: the form is unified across the two pages (same fields, same validations, same experience).
- Profile: a generic error message is shown (instead of a technical error) when something unexpected happens while creating or editing a team. Admins still find the detail in the logs.
- Notifications: "Mark all as read" is followed by an automatic refresh so notifications that arrived in the meantime are included. Links are stripped of stray spaces before redirecting.
- Navigation: the fallback user name (when no nickname is set) is now translated into the app's 4 languages.
v1.20.5 — 14 May 2026
- Championship detail: a more responsive page, especially in team mode (lighter licence checks).
- Championship detail in Relay mode: faster loading of the "teams that can enter" list.
- Accepting a team invitation: the transfer preview page is faster, especially when you have many active registrations.
v1.20.4 — 14 May 2026
- Member scope: visual harmonisation of the dialog backgrounds (team and championship). A consistent look everywhere.
- Error banner: the icon is now a crisp SVG (instead of the unicode emoji, which rendered unevenly across browsers).
v1.20.3 — 14 May 2026
- Profile: protection against rapid double-clicks on preferences (language + the 3 email notification toggles). The controls are disabled while saving. No more risk of an accidental double save.
- Quick registration confirmation from the championship list: a dedicated message when the registration was handled in the meantime by another tab, or cancelled by the organiser (instead of a generic error).
- Team detail: protection when transferring the manager role. If another manager transferred it in the meantime (from another device or tab), a clear message appears instead of a technical error.
- Championship detail (Relay mode): prevents opening the team entry dialog while a previous submission is still in flight.
v1.20.2 — 14 May 2026
- Championship detail: the Entrants tab is paginated at 25 registrations per page (no more overload on heavily attended championships). The total and the per-class breakdown stay visible at the top.
- My Races: results history paginated at 25 races per page. No more lag on long-standing accounts with a deep history.
- Championships home page: the simulation filter list is capped at 100. Beyond that, a message invites you to contact support.
- Robustness: if a championship's allowed classes are corrupted, the page stays usable (the filter is ignored) and admins find the problem in /admin/logs.
v1.20.1 — 14 May 2026
- Hardened security on the public pages (Championships, Entry list, Championship detail): protection against unauthorised access through a tampered link.
- Profile: a member can no longer edit someone else's profile, even through a tampered link. Covers all 7 profile actions (name, avatar, language, email preferences…).
- Championship detail: payment and registration actions are protected against tampered links.
- Profile avatar: stronger file validation (PNG/JPG/WEBP only, 1 MB max, automatic deduplication). Blocks malicious files disguised as images.
- Extended traceability: 24 member actions are now recorded in the admin logs (profile, my races, teams, announcements…).
- Public entry list: the action is attributed to "Public" in the admin logs (instead of being left blank).
v1.20.0 — 13 May 2026
- Hardened image upload security: every admin upload (logo, favicon, banners, image library) goes through deep validation (extension plus the file's actual content). Only PNG, JPG, WEBP and ICO are accepted. Blocks malicious files disguised as images.
- HelloAsso payment more tolerant of outages: on a brief HelloAsso outage, the system retries automatically up to 3 times with increasing delay. Users see nothing if the outage clears within a few seconds. Business errors (payment declined, invalid token) stay immediate and visible.
- Manual licence grant: the currency is configurable. The currency shown on manual payments now uses the one set in the settings. No more hard-coded "EUR".
- Payments page: truncated pagination. On high volumes (>25 payments), navigation renders as "1 … 9 10 11 … 20" (7 buttons max plus ellipses) instead of the full list. Far clearer on large histories.
- Logs: admin consultation is recorded. Every time an admin opens Settings → Logs, it is written into the table itself (with their name). Stops a malicious admin from reading the logs without leaving a trace. Bonus: unticking "All seasons" also clears the dates filled in automatically (no more "ghost dates").
- Admin performance: the Admin page is more responsive on large volumes. Payments page: seasons sorted by most recent date first (fixes an alphabetical-order bug).
- Admin Settings: the obsolete "Payment Coming Soon" card is gone, green indicators are consistent across every saved sub-tab, and the HelloAsso dialog is harmonised. Sturdier Email Provider input. Optional background task to clean up orphaned uploaded files.
v1.19.1 — 11 May 2026
- Paddock (the live standings panel on the right of the screen, on wide desktop): on multi-class championships (WEC style, with Hypercar, LMP2, LMGT3, LMGTE), standings are now broken down by class — one card per class instead of an unreadable mixed ranking that compared positions across different categories. Single-class championships are unchanged.
- Weather icons redrawn with a crisper, more consistent design (official Lucide Icons source): the Sun, Sun-Cloud, Cloud, Drizzle, Rain, Rain-Wind, Storm and Droplet pictograms appear on the weather box of event cards and in each race's detail panel.
v1.19.0 — 10 May 2026
- Simulated time speed: a new "×N" field configurable at championship level (overridable per race night). Shown as a badge on event cards, and used to display the duration drivers actually experience (e.g. "1h real / 12h simulated" for a ×12 accelerated race).
- Manual qualitative weather: the organiser can state the weather announced for a championship or for a specific race night (Clear, Cloudy, Overcast, Showers, Rain, Downpour, Storm). Shown publicly with a distinctive icon and an "Organiser input" tag.
- Automatic weather forecasts (Yr.no / MET Norway): a weather box appears on each upcoming event's detail page, with temperature and rain probability for the scheduled date. Available to public visitors. Pre-seeded for 14 landmark LMU circuits (Spa, Le Mans, Monza, Imola, Bahrain, Barcelona, Algarve, COTA, Fuji, Interlagos, Lusail, Paul Ricard, Silverstone, Sebring); other circuits can be completed from /admin/referential.
- Event detail page: new "Race conditions" panel with a large icon, conditions, temperature and rain rate. Blue accent border when the organiser entered it manually. Fails soft: the panel is absent when there is no data.
- Clickable weather box: clicking the icon (on a card or in the panel) opens a new tab to Yr.no with the full hourly chart, official alerts and an interactive map — the same provider as the forecast displayed, for strict consistency.
- Circuits referential (admin): two editable Latitude / Longitude fields added in /admin/referential. Lets you enable weather forecasts on any circuit (beyond the 14 pre-seeded LMU ones). Entered in decimal degrees, saved automatically.
v1.18.3 — 10 May 2026
- Results import — car model reconciliation dialog: the list of suggestions is now grouped by car class (one sub-heading per class: Hypercar, LMP2, GT3…) and sorted alphabetically inside each group. No more blind scrolling through 30+ mixed models.
- Results import — circuit reconciliation dialog: when a circuit from the file matches an existing one, the default suggested action becomes "Map onto an existing layout" instead of "Create a layout". If the circuit has only one layout, it is pre-selected automatically. If it has several with a "Default", that one is pre-selected. Strongly reduces the risk of accidentally creating duplicates on import.
- Results import — clearer wording: the class and model reconciliation dialog now explicitly says "rename" rather than "map", and a help message reminds you that the selected entity will be renamed and that every past race will show that new name. No more doubt about the retroactive effect of the action.
- Organise page: the "Ongoing events" checkbox is now ticked by default — active championships appear as soon as the page opens, without filtering by hand every session.
- Circuit selector (race night add/edit form): the field is wider and the full "Circuit · Layout" label now appears under the field after selection (useful for long names such as "Autodromo Nazionale Monza · Endurance layout"). A hover tooltip also shows the full text on desktop.
- Results import — reconciliation dialog: the "Suggested renames" mechanism is simpler and more direct. No more "Update / Keep" radio: every rename is applied by default (box ticked) and the admin only has to untick the rows to leave alone. Clear visual state (ticked box vs unticked and struck through). Click anywhere on the row to toggle.
- Results import — circuit reconciliation dialog: visually harmonised with the class/model one (same card style, spacing and typography). The Circuit and Layout fields now sit side by side (instead of stacked) for readability. Functional behaviour unchanged.
v1.18.2 — 8 May 2026
- Fixed a blocking bug when creating or editing a championship race night: the "Create" / "Save" button was inert (no visible action). The circuit selector now offers the hierarchical "Circuit · Layout" list (consistent with the rest of the application after the v1.18.0 rework) and saving works normally.
v1.18.0 — 8 May 2026
- Circuits reworked: one physical circuit (e.g. Spa-Francorchamps) now gathers its different runnable layouts (Endurance, GP, Default WEC…) in a clear hierarchy. The old flat model, where each layout was a separate circuit, gives way to something more natural: 1 venue = 1 entry, N layouts.
- Consistent display everywhere: "Circuit · Layout" in the lists (championships, results, calendar, my races, standings, hall of fame, entry list page). When a circuit has only one layout, only the circuit name is shown, to avoid visual noise.
- New circuit picker in the admin forms: type the first few letters and pick the layout you want directly, instead of juggling two dropdowns. Works on one-off creation and on championship editing.
- /admin/referential reworked: a "Circuits" sub-tab with a foldable hierarchy (click a circuit to unfold its layouts), separate editing of the circuit name and of each layout, cascade deletion with confirmation and an impact counter (how many heats/results will be affected).
- More robust results import: if the file mentions an unrecognised layout (e.g. "Paul Ricard 1A-V2-Short"), a reconciliation dialog offers 3 clear actions — create the layout under the existing circuit, map onto an existing layout, or handle it later.
- Car class and model referential simplified: one single name per class and per model, no more multi-name aliases piling up on every import. If the imported file uses a different name (e.g. "Hyper" vs "Hypercar" in the referential), the reconciliation dialog now offers to rename your entry directly — the display is realigned retroactively across all your past championships without touching the results. Simpler, and it lasts.
- Automatic data migration on deployment: all your existing championships are migrated to the new structure automatically. Logos, assigned DLCs and registrations are preserved exactly. ⚠️ For technical admins: a pg_dump of production is mandatory before deploying (the migration is not reversible).
v1.17.4 — 6 May 2026
- Fixed a blocking bug when publishing results: on an event still in "Running" status, clicking "Publish" did nothing (no message, no feedback) and forced a page refresh. The event now moves automatically to "Results to publish" then "Closed" as part of the action — consistent semantics: publishing results implies the event is over. A clear error message also appears on any other unexpected problem.
v1.17.3 — 5 May 2026
- Smoother, longer-lasting results import: when a car class or model from the file (e.g. "Hyper", exported by LMU instead of "Hypercar") is not recognised, the reconciliation dialog that already appears for renames now also offers a dropdown to map it onto an existing referential entry in one click. No more registrations silently blocked because the file uses a different name.
- Lasting memory: a "Remember this name for future imports" checkbox (ticked by default) adopts the file's name as a durable alias of the chosen class or model. On the next import of the same file, those names match automatically and the dialog no longer appears.
- Enriched LMU catalogue: the "Hyper" and "LMP2_ELMS" aliases are now recognised natively (the forms used by LMU XML exports).
- Fixed a pre-existing bug: remembered renames (aliases) are now correctly applied on a new import.
v1.17.2 — 4 May 2026
- New: organisers can now register an existing member to a championship themselves. A "+ Register a member" button is available right on the championship's main page (under the title) and on a race night's registrations page. The registration propagates automatically to every session of the championship, with a choice of car class and model.
- New: administrators can grant a licence (season or championship) to a member manually from /admin/payments — useful for VIP drivers, off-platform payments, or any special case needing a licence without going through the HelloAsso checkout. Every grant leaves a trace in the payment journal with the stated reason.
- The registered member (or licence beneficiary) immediately receives a notification and an email about the action.
v1.17.1 — 4 May 2026
- Fixed a critical bug: a draft championship with a heat dated in the past silently had its status flipped server-side ("Results pending" instead of "Scheduled"), which hid the Edit/Delete buttons and blocked all editing. A draft now stays 100% editable whatever dates you enter — automatic transitions only kick in once it is published.
- UX clarity: on the heat management page, the top button is now called "Add a race night" (= a new, separate night with its own circuit), while the button under each night stays "Add a heat" (= one more heat inside that night, inheriting the parent's circuit). No more confusion between the two actions.
- Fixed a refresh defect: after adding a simulation from the catalogue, the Circuits / Car classes sub-tabs still showed the content of the previously selected simulation. The content is now immediately up to date with the newly selected simulation.
v1.17.0 — 3 May 2026
- Official logos now visible in the app: simulations on championship cards, circuits on rounds, and a first dedicated display of car classes (GT3, WRC, Hypercar, etc.) on the admin side — rolling out to the public pages in an upcoming version.
- Consistent rendering guaranteed: when an official logo is missing, an automatic badge with initials and the identity colour takes its place — never an empty square again.
- For admins: a new visual picker to override each circuit's or car class's logo, through filterable thumbnails of the available files (click the logo in /admin/referential).
- Dark mode improvements: every fallback badge respects the colour tokens specific to the dark theme.
- Catalogue on demand: from /admin/referential, a new "Add a simulation from the catalogue" button — organisers load ACC, AC, AMS2 and the other simulations in one click, without the admin shell command.
- Automatic pre-loading: the chosen simulation arrives with its full catalogue (circuits, classes, cars, official DLCs, logos) within seconds.
- Architecture ready for post-release official DLCs: each new DLC ships in a dedicated file and appears automatically on simulations already loaded, without touching existing content.
- Traceability: every simulation load from the UI leaves a trace in the admin logs (who loaded what, when).
v1.16.1 — 3 May 2026
- Internal groundwork: the official logo library (simulations, circuits and car classes) is now wired automatically to the reference catalogue. Uniform display across the app arrives in an upcoming version.
- For platform admins: the catalogue import shell command now ingests the logos in the same pass.
v1.16.0 — 2 May 2026
- Reference catalogue pre-filled for 8 popular simulations (Assetto Corsa, ACC, AC Evo, AC Rally, AMS2, Le Mans Ultimate, RaceRoom, rFactor 2) — over 129 circuits, 162 cars and 42 DLCs catalogued
- Identification of the DLCs required to take part in a championship — visible right on the championship cards (clickable badge) and on the detail page (full list with a link to each DLC's official store)
- DLC management built into /admin/referential — Admin and Organizer can create a DLC in a few clicks and assign it to the relevant circuits or models
- Richer entry list page: the DLCs required for the race appear just under the title, so drivers see at a glance what they need to own before entering
- For platform admins: a new `seed-reference` shell command imports or updates the catalogue from 8 editable JSON files — idempotent, never touching manual adjustments
- Mobile friendly: the "Required DLCs" badge stays readable on a small screen, and the detail panel adapts automatically
v1.15.3 — 28 April 2026
- Reliability: claim rejection and revocation reasons are now persisted as you type, removing a rare race condition where a quickly-clicked Confirm could lose the typed reason on a slow network
- OneShot edit: cleaner layout — Settings on top, Sessions below, Save button anchored at the bottom. The duplicate Duration / MaxDrivers fields are gone (they live on each session now), so saving Settings can no longer accidentally overwrite session 1 while leaving sessions 2..N untouched
- OneShot edit: a sticky Save settings button now follows you down the page and lights up only when you have actual changes to save — clearer signal, no more guessing whether a click did anything
- Reliability fix: real-time notification badge across multiple tabs now actually works — the previous infrastructure had been silently broken since v1.15.0 (badge still updated on next page load, but live cross-tab sync did not)
v1.15.2 — 27 April 2026
- Security hardening: notifications can only be marked as read by their owner — extra check applied even if a notification ID leaks
- Performance: registrations and notifications lists feel snappier — composite indexes on hot-path queries + lighter projections on member stats and attendance reports
- Keyboard accessibility: notification bell, broadcast streams menu, achievement icon picker and image library tiles are now fully usable without a mouse — Escape closes dropdowns, Enter/Space activates focused tiles
v1.15.1 — 27 April 2026
- Notification bell now opens a popover with your 5 latest notifications — quick preview without leaving the page
- Scoring schemes editor: optional multilingual description (EN/FR/DE/ES) — document why a scheme awards what it does, in the language your community speaks
- Achievements stay accurate after claim resolutions: a penalty that shifts the podium now automatically reawards the badges and notifies the drivers who gain or lose a medal
- Notification badge updates in real time across all your open tabs and devices — no more page reload to know you have a new message
v1.15.0 — 26 April 2026
- Robustness: state transitions (claims, heats, results) are now validated in real time — invalid sequences fail immediately instead of leaving silent inconsistencies behind.
- Performance: 6 JSON columns migrated to PostgreSQL's native format — groundwork for faster searches in future versions.
- Audit: 7 entities (Championship, Member, AdBanner, Notification, licences, Team) now record their last update automatically — visible in the admin audit log.
v1.14.3 — 26 April 2026
- Cancel a championship cleanly: registrations and team enrollments are properly withdrawn together (was missed before), drivers get notified
- New 'Cancel all registrations' button — wipes the registration slate for a published championship without changing its status (handy when you need to reopen sign-ups)
- Send a championship back to Draft without losing any registration: pilots stay registered, ready for republishing instantly
- Locked classes after publishing: you can add new car classes/models on the fly, but you can no longer remove existing ones — protects already-registered drivers
- Reschedule modal redesigned: clearer 'Currently scheduled / New date' layout, recipient counter is now visually prominent (you'll know exactly how many people get notified)
- Live championships now have a subtle pulsing dot on their status badge — easy to spot which one is in progress at a glance
- Action buttons polished with icons (calendar-clock for reschedule, lock for locked-classes hint) — actions are easier to scan
v1.14.2 — 26 April 2026
- You can now reschedule a round of a published or in-progress championship — all sessions of the round shift together while preserving their relative timing
- Registered drivers and teams are notified automatically (in-app + email, opt-out from your profile preferences)
- Out-of-order calendar warning shown if the new date overlaps with another round — non-blocking, your call
v1.14.1 — 26 April 2026
- One-shot events with multiple sessions are now fully editable from the championship page (sessions list visible, add or remove sessions with safety checks)
- Deleting a session no longer asks you to retype its name — a clear confirmation modal is enough
v1.14.0 — 25 April 2026
- Online payments — pay your season or championship license directly via HelloAsso (sandbox or live mode)
- Receipts arrive by email and are accessible from your notification — no more chasing the admin
- New admin Payments page with filters by date, status, member and type — full audit trail
- License revocation now requires a clear reason (refund / abuse / member request / other) and is auto-traced
- Footer redesigned with a discreet 'Support the dev' Ko-fi button (always visible on desktop)
- Test mode banner across the app whenever HelloAsso is in sandbox — no more accidental real charges
- All security credentials are now encrypted at rest (HelloAsso, SMTP, ZeptoMail)
v1.12.1 — 25 April 2026
- Fixed: simulation logo no longer overlaps the round title in the entrylist hero
- New Profile section to choose how your name appears on public entrylists (Auto / pseudo / Steam name / sim name)
- Sim names are picked up automatically from your race result imports
- Live preview shows the chosen name as it will appear on the entrylist before saving
v1.12.0 — 25 April 2026
- New public entrylist pages: every race has its own page in WEC/IMSA-style design with classes, drivers and teams
- Provisional entrylist becomes available 24h before the race, then locks officially at race time
- Quick access to entrylists from championship details, my races, agenda popover and notifications
- Print to PDF directly from the entrylist (A4 landscape) for race day briefings
- Shareable links with social media previews (Discord, Twitter, Facebook)
- Profile: pick your country (flag on entrylist) and opt in to email when entrylist is published
- Enrollment: optional car number with duplicate warning + livery upload (per driver, or per team in relay)
- Admin: assign a color and display order to each car class, plus an optional track layout map
v1.11.2 — 24 April 2026
- One-shot events can now contain up to 5 sessions (e.g. qualifying + race 1 + race 2)
- Each session has its own label and durations — reorderable in the creation wizard
- Results import still works session by session — unchanged for organizers
v1.11.1 — 24 April 2026
- Language switch now takes effect immediately — no more stuck French labels when English is selected
- Duplicate a round in one click (+15 days ahead) — tracks, durations and heats are copied; poster and streams stay empty
- Fixed duplicate 'Allowed classes' label in championship creation wizards
- German and Spanish translations harmonized around Round / Runde / Ronda vocabulary
v1.11.0 — 23 April 2026
- Members page redesigned with 4 tabs: Pending / Active / Revoked / Access
- Live search and column sort on the members list
- Click a username or forum ID to edit it inline
- Green dot on avatars shows who's online
- Access revocation now requires a 2-step confirmation
- Pending requests highlighted with an orange badge
- Permanently delete tracks, car classes or car models — a guided dialog reassigns existing references
- Move a car model to another class without breaking history
- Merge duplicate tracks or car models in one click — pick the master, the rest disappears
- Inline rename: click a track or car name to edit it directly
- Live counts on every referential tab + 'Show disabled' toggle to view archived items
- Per-simulation referential split into Tracks / Car Classes sub-tabs
- Compact 3-panel simulation toolbar — clearer scan, scales to many organizers
v1.10.2 — 23 April 2026
- Activity logs (Settings → Logs) now have a new 'Event type' filter to surface authentication events, access decisions, role changes and system errors at a glance
- SMTP outages, result-file parser failures and background-job crashes now appear directly in the activity log — previously visible only in server-side logs
- Existing entries (login, logout, role change) are now properly tagged so they're filterable by category
- Each typed entry shows a discreet badge next to its source for instant recognition in the listing
v1.10.1 — 23 April 2026
- Championship and team cards redesigned: titles and key stats stand out, status badge moves to the top-right corner, typography unified across all listings
- Team championships now show a clear 2-helmet icon with the mode (Parallel or Relay) in orange — instantly recognizable at a glance
- Cards breathe more on desktop (more padding and spacing), stay compact and legible on phones
- All card listings across the app (events, my races, teams, notifications, feeds, results) share the same visual language — same title size, same date format, same number styling
- Better readability: orange team labels now stand out on both light and dark backgrounds, status badges are announced by screen readers, keyboard focus is clearly visible when tabbing through the page
- Phones: every list reliably switches to a single column, cards get tighter padding to fit the narrower screen
- My Races: upcoming evening cards are more airy between the title, heat list and actions — and the 'Next Start' time is now a green pill that jumps out
v1.10.0 — 22 April 2026
- Teams & Endurance: organizers can now create championships in team mode (Parallel or Relay) from the wizard
- Drivers can create and run teams: invite members, transfer manager role, leave, delete empty team — all from the new My Teams space
- Mode-specific enrollment: Relay = the team manager picks the signature car once and members inherit it; Parallel = each driver enrolls individually and the team is linked on the first member
- Accepting an invitation previews the impact: simple join, transfer to a new team (Relay), or archiving of your Solo registrations — with a dynamic call-to-action, mobile collapsible sections and sticky action buttons. Safety net: if you're removed or leave a Parallel team with active registrations, a personal team is created automatically
- Team claims on Relay championships: team managers file a team-level claim with an optional confidential suspected-driver annotation, the opposing manager can defend in writing, and admin arbitrage renders team-vs-team with the penalty applied on the team result directly
- Relay drivers see an informational banner on My Races when their team receives a penalty (with a subtle highlight animation, respects reduced-motion), with zero impact on their personal stats
- Visual identity everywhere: upload a profile car, pick a country flag from the dropdown, and see logos + flags + colors on team cards, standings (gold/silver/bronze trophies for top 3), Entrylist thumbnails and admin claims
- Championship cards now show a `[TEAMS · PARALLEL/RELAY]` badge and the footer reads 'N teams engaged (M pilots)' instead of just 'M entries'
- Fixed: joining a Parallel-mode championship no longer silently unlinks your registration from your team — team standings and scoring now include every member from day one
- Fixed: the admin Statistics page no longer crashes on championships where rounds inherit the default driver cap
v1.9.0 — 20 April 2026
- Multi-heat evenings: organizers can now schedule two or more heats under the same evening (same track, same practice, same briefing). Evenings with a single heat keep working exactly as before
- Drivers confirm or withdraw for a whole evening in one click — all heats covered at once, with waitlist and capacity handled behind the scenes
- My Races now groups upcoming races by evening with clear status dots per heat. Partial states (e.g. one DNS imported) stay read-only and suggest contacting the organizer
- Admin and public championship pages display heats grouped by evening with a "N HEATS" badge when applicable, plus a podium preview (top 3) for closed heats
- Agenda shows one entry per evening with a numeric badge for multi-heat evenings
- Cancelling an evening: new confirmation modal (type the evening name) that removes the whole evening and notifies every registered driver
- Performance: saving or deleting a round is now near-instant (a 3-second lag on the success toast was blocking the flow across the app)
v1.8.4 — 19 April 2026
- UX polish: confirmation toasts after you enroll in a championship, upload an image, or publish results — no more silent clicks
- Consistency polish: podium medal colors, navbar gradient, validation outlines and error banners all pulled from the design system tokens — same look, cleaner internals
- Image library upload: new dashed drop zone with "Click or drop an image" hint and upload icon
- Claim cards (admin): race context (grid / finish / points) now collapsed by default when you expand a claim — one click to show it, less visual noise
- Race event description: organizers can now add a short markdown note per round (weather, format reminder, briefing link) — shown on the championship page for the active / next round, and on the results page of past rounds
- The organizer note is limited to 500 characters and supports **bold**, _italic_, [links](https://...), lists and quotes — same syntax as championship announcements
- New championship wizard: creating a championship or one-shot event is now a guided 3-step flow (Identity → Format → Rules) with live validation, step preview and a clear progress bar — no more 15-field wall
- Championship poster: upload an image during creation to showcase your championship on the public /events list and on the championship page — reuses the same image library as round posters (upload once, use for championship and/or rounds)
- /events tab default: "All" tab now shown first by default, more relevant at arrival than "Mine" which is a secondary filter
v1.8.3 — 18 April 2026
- Faster page loads on Home and Hall of Fame — leaner database queries
- Better resilience to transient database hiccups — Steam sign-up no longer fails on brief connection blips
v1.8.2 — 18 April 2026
- Claims UX overhaul: claims tab on /admin/championships/{id} refactored into expandable cards with inline accept / reject / revoke
- Race context inside each expanded card — grid position, finish status, points — and a live preview of the standings impact when an organizer picks a penalty
- Quick penalty buttons: the 3 most-used templates appear as one-click shortcuts, full list still available via "Other…"
- Pending claims are sorted by urgency; a J-X / Urgent / Expired badge highlights claims approaching the review deadline
- Revoking a resolution now needs a reason (required text) and a click-again confirmation to prevent accidental clicks
- Accept / Reject / Revoke now notify the claimant (and the target when relevant) — the communication loop is finally closed
- Members can edit or delete their own Pending claim, with a fair-play hint above the form and a success toast after submit
- Target dropdown shows position + car class + finish status, making it easier to pick the right pilot from the results
v1.8.1 — 17 April 2026
- Championship announcements: organizers publish Markdown posts on a championship, notified to all active enrollees (in-app + email)
- Image library: shared track logos and event posters reusable across simulations. Upload once, use many. JPG/PNG/WebP
- Stream URLs: up to 5 streaming links per round (Twitch/YouTube/Kick...) with labels. Broadcast icon on every public surface
- Terms of Use: new /terms page, footer link, upload liability notice on image pickers (takedown contact: benjamin@racemarshal.app)
- Claims fix: submitting a claim now notifies every organizer of the simulation (in-app + email). Deep-link opens the claims page directly
- Pending-claims badge on /admin/championships to spot the moderation workload at a glance, without drilling into every round
- New Claims tab on each championship page: cross-rounds view with inline accept/reject/revoke. 5 clicks → 2 clicks to resolve a claim
v1.7.3 — 16 April 2026
- Paddock: timing tower sidebar (desktop left) showing latest race results per sim (top 5) and championship standings (top 10), auto-scrolling with CSS animation, pause on hover, click to navigate
- Dark/Light theme: automatic system detection via prefers-color-scheme — dark mode 'Dusk' with racing identity (navy background, blue RFRO primary, red/orange accents). Zero JS, zero toggle (follows OS setting)
- Identity refresh: purple #534AB7 replaced by blue RFRO #2563eb across both modes. Bootstrap internals (--bs-body-color, --bs-table-color) wired to var(--rm-*) for automatic propagation
- Full dark mode audit: all hardcoded white/black colors migrated to var(--rm-*) — tables, forms, file inputs, dropdowns, modals, notifications, badges, previews
v1.7.2 — 16 April 2026
- Email: ZeptoMail API integration — alternative to SMTP for PaaS hosting (Railway) where outbound SMTP ports are blocked. Uses HTTPS (port 443) instead of SMTP (port 587)
- Settings: email provider selector (SMTP or ZeptoMail API) with dedicated configuration fields. From-email and from-name shared between both providers
- Automatic routing: if ZeptoMail API key is configured, all notification emails are sent via the HTTP API. If removed, falls back to SMTP transparently
v1.7.1 — 16 April 2026
- Fix: SMTP test button no longer hangs silently in production — 15s timeout added, clear error messages for blocked ports / bad credentials / SSL mismatch
- Fix: SMTP diagnostic logs now visible in Railway (was using NullLogger, now resolved from DI)
- UX: spinner shown immediately on SMTP test click (was frozen during the 15s timeout with no visual feedback)
- UX: test email field now enables the button as you type (was requiring tab-out first)
v1.7.0 — 15 April 2026
- New Agenda view (/agenda): monthly calendar aggregating every round across your championships and the ones you follow. Registered events are marked with a star, others with a circle.
- Color-coded by simulation — each sim gets its own pastel color consistently across the calendar and the filter pills
- Filter pills: click to toggle simulations on/off. Matches the calendar colors so you instantly see which pill controls which events
- Navigate between months (‹/›) or jump back to today with one click. Desktop only — on mobile the view redirects to My Races
- Click an event to jump straight to its round in the championship detail page (anchor support added)
v1.6.2 — 15 April 2026
- Achievements: Hat Trick now supersedes The Double — a driver who scores pole + win + fastest lap in class receives a single Hat Trick medal (the redundant Double medal is filtered out)
- Scoring: same rule applied to bonus points — a Hat Trick no longer cumulates with The Double bonus rule points (coherent with the medals)
- UI: two distinct icons for paid notions — Euro symbol for paid servers (impacts championship cost, orange), shopping bag for paid DLC (informational, sky blue). Icons also surface on Events cards so you can spot a paid simulation or DLC track at a glance
- UI: consistent flex alignment for paid icons across referential, admin, and rounds lists — no more baseline drift on uppercase sim names
v1.6.1 — 14 April 2026
- Tester UAT quick fixes: accent corrections in the translations, label cleanup, attendance calculation fix.
- Stats: attendance rate now correctly capped at 100% (scope aligned on closed events)
- Race results: Qual column removed (redundant with +/-), new Car model column, pole position badge [P] next to driver name
- Season standings: tooltip on driver name shows the 2 last cars used (desktop); mobile cards get an optional 3rd line with the same info
- RaceResult now stores the actual car model driven (CarModelId), matched from the imported file
- LMU parser: starting grid positions (GridPos, ClassGridPos) now extracted from race files
- Race results: +/- delta is reliable even for drivers who missed qualifying (uses real grid position)
- Qualifying file is now truly optional for LMU — required only for best-lap times and pole-related achievements
- Referential import: stricter fuzzy matching (min 6 chars + max 20% variation) — fixes a bug that could rename GT3 into GTE. Fuzzy matches now default to Match (reversible) instead of Update, and are highlighted in the preview
v1.6.0 — 13 April 2026
- Mobile: multiple improvements (compact results & standings cards, auto-redirect, responsive tables)
- New PWA icons (logo)
v1.5.4 — 13 April 2026
- My Races: inline confirm/decline directly from cards (no more navigation to detail page)
- Responsive round cards on mobile for championship detail and admin manage pages
- Fix: quick-confirm capacity check + unified waitlist promotion notifications
v1.5.3 — 13 April 2026
- Fix: platform access control — new members now correctly blocked in ApprovalRequired, InviteOnly, and InviteOrApproval modes
- Fix: access guard middleware reads AccessMode from DB on each request (no more stale startup cache)
- Fix: Steam callback redirects to /access when member has no platform access
- Fix: /access page no longer shows 'Revoked' for new members — invite code form visible in InviteOnly mode
v1.5.2 — 12 April 2026
- Import UX: single file upload with compact feedback (format, sessions, drivers count), collapsible block
- Import UX: no more Race/Qualifying tabs — automatic session detection, optional qualifying file add
- Reconciliation: tracks and car classes can only be matched/updated — no accidental creation from import
- Reconciliation: fuzzy matching with Levenshtein distance for approximate track/class names
v1.5.1 — 12 April 2026
- Fix: driver matching now persisted for LMU/rF2 results (no SteamId in XML files) — manual match carries over to next rounds automatically
- Fix: unmatched driver combo no longer shows stale values after matching a driver
v1.5.0 — 12 April 2026
- Email notifications: SMTP integration (Zoho, Gmail, any provider), HTML template with platform branding, 14 email-worthy notification types
- Global email toggle (admin) + per-member opt-out in profile
- Championship edit: Settings tab homogenized with 2-column layout, Published championships editable until first round played
- Class reassignment dialog: blocking dialog when removing a class with enrolled members — auto-reassign enrollments + registrations + notify
- Organize page: creation mode hides lists and filters for focused UX
- Season combo hidden for public visitors on /events
- License file resolution fixed for production (Docker/Railway)
v1.4.0 — 12 April 2026
- Championship detail: compact 3-column layout (Registration, Round schedule, Info) with full-width timeline when live
- Event cards redesigned: 3 visual zones, track name highlighted, condensed durations (Q 10' / R 120'), 2-line title clamp
- My Races: visual cards with colored countdown pills, pending section with warning accent, clickable history cards with podium colors, 2-column desktop grid
- Event Results (organizer): tabbed layout (Results / Achievements / Unmatched) with action buttons moved up under summary
- Championship form: compact 2-column layout (identity+classes / config+rules)
- Logs: advanced filters (source, actor, date, season), batch pagination, configurable retention (30-1095 days) with auto-purge at startup
- Fix: auth flash on admin pages eliminated (Authorizing template)
- Fix: Organize filter checkboxes persist across navigation
v1.3.0 — 12 April 2026
- Results UX refonte: tabbed display per class with enriched columns (Laps, Time/Gap, Pits, +/- delta)
- Standings refonte: round-by-round grid with color-coded performance (win/podium/DNF)
- Fastest lap and pole position highlights in results table
- Parser enrichment: laps completed and pit stops extracted from rF2/LMU result files
- Section reorder: Summary, Achievements (Gold/Silver/Bronze), then Results
v1.2.0 — 12 April 2026
- Mobile responsive: hamburger menu, collapsible navbar, mobile-first layouts on all pages
- PWA: installable on Android + iOS home screen (manifest + icons)
- Per-class scoring: each car class has its own podium and points (multi-class endurance support)
- Qualifying import: Race + Qualifying tabs with cross-file fallback for combined sessions
- Auto bonus scoring: pole position, fastest lap, class podium, biggest climber from scheme rules
- Track & Class name reconciliation dialog at import (rename in place or keep local)
- Back-dated import: admin can import historical results with auto-enrollment of matched members
- Ad banners: 4 placements (top bar, championship detail, sidebar, footer) with mobile strategy
- Results display grouped by class with per-class qualifying positions
- Error page localized, notification indicators redesigned (CSS badges)
v1.1.0 — 11 April 2026
- UX design migration: unified design system with CSS variables
- Statistics: attendance, fill rate, championship analysis
- Referential reconciliation: auto-matching drivers, tracks, cars from result files
- Platform access control: invite code, approval workflow, access gate
- DurationMode (Time/Laps), Practice/Briefing fields, event timeline
- AMS2 result parser + per-simulation default parser
- URL rename /championships to /events, cards redesign with class pills
- Declined registration status per round
- Localized notifications in recipient's preferred language (22 types)
- AllowCarChange at round confirmation, one-shot auto-confirm
- Destructive action confirmation dialogs
- CI/CD: GitHub Actions (ci, nightly tests, release)
- Production hardening: security headers, Docker, Railway deployment
v1.0.0 — 9 April 2026
- Initial release
- Platform setup, user profiles, referential
- Championships, results import, claims, achievements
- Season management with auto-transition and grace period
- Public pages, registration, waitlist, licensing
- Dashboard, My Races, Hall of Fame
- Notifications (in-app, 15 types)
- Background job for registration deadlines
License
RaceMarshal — Proprietary License Copyright (c) 2026 RaceMarshal All rights reserved. This software and associated documentation files (the "Software") are the exclusive property of RaceMarshal. Unauthorized copying, modification, distribution, or use of this Software, via any medium, is strictly prohibited without prior written permission from RaceMarshal. The Software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. For licensing inquiries, contact: benjamin@racemarshal.app
Credits
Developed by a simracer, for simracers ;)