{
    "version": "https://jsonfeed.org/version/1",
    "title": "RunScore Changelog",
    "home_page_url": "https://docs.runscore.com/changelog",
    "description": "RunScore Documentation Blog",
    "items": [
        {
            "id": "https://docs.runscore.com/changelog/9.0.1",
            "content_html": "<p>RunScore 9.0.1 is a major race-day stability patch. We've eliminated the reported mid-race crashes, made the system highly resilient to bad internet and hardware disconnects, and added protections so simple human errors no longer take down your software.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"️-crash-fixes--stability-hardening\">🛠️ Crash Fixes &amp; Stability Hardening<a href=\"https://docs.runscore.com/changelog/9.0.1#%EF%B8%8F-crash-fixes--stability-hardening\" class=\"hash-link\" aria-label=\"Direct link to 🛠️ Crash Fixes &amp; Stability Hardening\" title=\"Direct link to 🛠️ Crash Fixes &amp; Stability Hardening\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Forgiving Data Entry:</strong> Simple volunteer typos, like entering a birth year in the future (e.g., 2027), putting a letter in a number field, or pressing F4 (\"Next Bib\") incorrectly, are now safely caught instead of crashing the program.</li>\n<li class=\"\"><strong>Eliminated UI Freezes:</strong> We've resolved application lock-ups during the \"Update All Entries\" utility and fixed background freezing on scrolling Live Results boards.</li>\n<li class=\"\"><strong>Hardware Integration Stability:</strong> We've hardened the connections for MyLaps and ChronoTrack Live so sudden disconnects or logins won't force a shutdown.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"-network-share--remote-station-rsclient-fixes\">🌐 Network Share &amp; Remote Station (RSClient) Fixes<a href=\"https://docs.runscore.com/changelog/9.0.1#-network-share--remote-station-rsclient-fixes\" class=\"hash-link\" aria-label=\"Direct link to 🌐 Network Share &amp; Remote Station (RSClient) Fixes\" title=\"Direct link to 🌐 Network Share &amp; Remote Station (RSClient) Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>WiFi Disconnect Protection:</strong> If a remote laptop (RSClient) loses WiFi mid-race, the main server will no longer crash from corrupted data when the laptop attempts to reconnect.</li>\n<li class=\"\"><strong>Foolproof Client-Server Sync:</strong> We rebuilt how laptops talk to each other to keep them perfectly in sync, permanently fixing the remote \"Failed to read field type\" error and restoring reliable name-to-bib matching on Announcer screens.</li>\n<li class=\"\"><strong>Network Share Protection:</strong> RunScore now actively detects if a race is hosted on a risky network drive and prompts you to move files to the local <code>C:</code> drive to prevent \"ghost\" data errors and corruption.</li>\n<li class=\"\"><strong>Bulletproof Internet &amp; Network Drops:</strong> RunScore will no longer freeze or crash if your internet drops during background FTP uploads, or if a remote laptop loses WiFi mid-race. It now safely preserves your data until the connection returns.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"-data-integrity--integrations\">🎯 Data Integrity &amp; Integrations<a href=\"https://docs.runscore.com/changelog/9.0.1#-data-integrity--integrations\" class=\"hash-link\" aria-label=\"Direct link to 🎯 Data Integrity &amp; Integrations\" title=\"Direct link to 🎯 Data Integrity &amp; Integrations\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Strict Duplicate Bib Blocking:</strong> The Browse grid now instantly normalizes and blocks duplicate bib inputs <em>before</em> they are saved to the database.</li>\n<li class=\"\"><strong>Comma-in-Quotes Fix:</strong> Registration answers containing commas (like custom questions or detailed waivers) no longer shift columns out of alignment during downloads.</li>\n<li class=\"\"><strong>1-Mile Age-Grading:</strong> Updated male 1-mile results to use the official <strong>2025 WMA scoring tables</strong> (fixing a past typo that accidentally applied female scoring factors to males).</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"-performance--ui-clean-up\">⚡ Performance &amp; UI Clean-up<a href=\"https://docs.runscore.com/changelog/9.0.1#-performance--ui-clean-up\" class=\"hash-link\" aria-label=\"Direct link to ⚡ Performance &amp; UI Clean-up\" title=\"Direct link to ⚡ Performance &amp; UI Clean-up\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Lightning-Fast Status Displays:</strong> Large email and SMS blasts now show a clean, real-time message counter instead of lagging your screen for an hour with individual addresses.</li>\n<li class=\"\"><strong>\"Attic Cleaning\":</strong> Removed legacy code for defunct registration platforms (GetMeRegistered, ActiveWorks, ZapEvent, and imATHLETE), heavily reducing background overhead and accelerating software load times.</li>\n</ul>\n<p><strong>…and over 25 more fixes!</strong> We resolved complex file-parsing errors, improved how Windows pop-up prompts behave, overhauled our \"BugSplat\" crash reporting so we can fix future issues faster, and streamlined your initial hardware setups. This is the most stable version of RunScore ever built.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"details\">Details<a href=\"https://docs.runscore.com/changelog/9.0.1#details\" class=\"hash-link\" aria-label=\"Direct link to Details\" title=\"Direct link to Details\" translate=\"no\">​</a></h2>\n<ol>\n<li class=\"\">\n<p><strong>Fixed Print &amp; Input Prompt Crashes:</strong> We have resolved a bug where RunScore could crash when displaying an input box (such as when a listing file asks \"FROM PAGE NUMBER\"). This was due to a technical conflict in how the software requested the pop-up window from Windows. The system is now much more robust when handling these \"question mark\" commands, ensuring your print prompts and data entry boxes appear reliably without interruptions.</p>\n</li>\n<li class=\"\">\n<p><strong>Improved Error Messaging Reliability:</strong> We fixed a frustrating bug where certain error alerts, meant to warn you about a problem in your setup, would actually cause the software to crash instead of displaying the message.</p>\n</li>\n<li class=\"\">\n<p><strong>Smoother Setup for New Laptops:</strong> We've fixed a frustrating \"Invalid Baud\" error that appeared when setting up external timers on new computers. Previously, RunScore would try to validate settings for all eight timer slots at once, even the ones you weren't using! The software is now smarter: it only checks the timers you have actually set to \"Start.\" Furthermore, if you are using a modern network (TCP) connection, it will no longer nag you about \"baud rates\" (which only apply to old-school serial cables). This makes your first-time hardware setup much faster and more intuitive.</p>\n</li>\n<li class=\"\">\n<p><strong>Improved RSClient Connectivity:</strong> We have refined the connection process between the <strong>RSClient</strong> and your main server, specifically for new computers. We fixed a logic error that caused the software to claim a server address was \"missing\" even immediately after you typed it in. Additionally, we fixed a bug that prevented the connection window from reopening if you hit \"Cancel.\" You can now freely open, close, and retry your connection settings without being locked out. This ensures a stress-free setup when configuring your announcer and results screens on a fresh laptop.</p>\n</li>\n<li class=\"\">\n<p><strong>Stable MyLaps Shutdown:</strong> We have fixed a crash that could occur when closing a race or disconnecting a MyLaps timer. Previously, stopping the timer connection at specific moments (like during an initial setup or mapping prompt) could cause RunScore to close unexpectedly. The software now handles these disconnections gracefully, ensuring you can wrap up your event or change hardware settings without any \"BugSplat\" errors.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed \"Next Bib\" (F4) Crash:</strong> We have resolved a bug that caused RunScore to crash when pressing <strong>F4</strong> to find the next available bib number. This crash typically occurred if your database was set up with a long text field (like a Name or Address) as the first searchable item in your list. RunScore now handles this setup correctly. More importantly, if your database configuration isn't quite right for the \"Next Bib\" feature to work, the <strong>Runtime Validator</strong> will now give you a clear warning telling you exactly which field needs to be adjusted.</p>\n</li>\n<li class=\"\">\n<p><strong>Network Share Protection &amp; Performance Warning:</strong> To protect your race data and prevent system crashes, RunScore now detects if you are hosting a race on a network share (such as a shared office drive or a UNC path). Real-time race timing requires extremely fast, low-latency disk access. Running a race over a network can cause \"ghost\" data errors, performance slowdowns, and crashes when remote screens try to connect. If RunScore detects a network-hosted race, it will now provide a warning dialog with best-practice advice. For the best experience and 100% data safety, we always recommend copying your race folder to your local <strong>C: drive</strong> before you begin timing.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Crash on Race Close or Erase:</strong> We have resolved a rare but frustrating crash that could occur if you clicked an event selection or results button at the exact same moment you were closing or erasing a race. Technically, the software was trying to process your click for a race that had just been \"packed up\" and removed from memory. We have added a new safety guard that allows RunScore to recognize when a race is no longer open and simply ignore any \"in-flight\" commands, ensuring the software remains stable even during rapid screen changes.</p>\n</li>\n<li class=\"\">\n<p><strong>Remote Race Stability Fix:</strong> We have resolved a complex \"sync\" issue that could occasionally occur. In some cases, if a specific file was missing on the server, the Server and Client would get \"out of step\" in their conversation. This led to a \"cascading\" error where the client might accidentally save the wrong data into your entry form, resulting in a \"Failed to read field type\" error when trying to view participants. We have implemented a new <strong>Message Framing</strong> system. Think of this like adding clear punctuation to the end of every sentence the computers speak to each other. Even if there is a network glitch, the Server and Client now have a foolproof way to stay in sync, ensuring that remote race opening is rock-solid every time.</p>\n</li>\n<li class=\"\">\n<p><strong>Empty File Stability Fix:</strong> We resolved a crash that occurred when RunScore encountered an \"empty\" configuration file (like a <code>DIVISION</code> file with no text in it). Previously, the software would mistake this empty file for a valid one and crash while trying to read it. The system now correctly identifies these files and handles them safely.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Browser Refresh on Remote Stations:</strong> We have resolved an issue where the main participant list (Browse window) on a remote computer (<strong>RSClient</strong>) would not update automatically after you added a new entry. Previously, if you were typing in new participants on a secondary laptop, you would have to manually refresh the screen to see the names you just entered. Now, as soon as you hit <strong>F10 (Save &amp; Close)</strong> or <strong>F12 (Save &amp; New)</strong>, the list will instantly refresh to show the new data and automatically scroll to the new record. This ensures that all stations always have a \"live\" view of the race database.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Typo-Induced Crashes (Birth Dates):</strong> We have resolved a bug where RunScore could crash if a participant's birth date was entered as being <em>after</em> the race date (for example, accidentally typing \"2027\" instead of \"1997\"). Instead of closing unexpectedly, RunScore now handles this typo gracefully. The <strong>Runtime Validator</strong> will flag the specific record for you to fix, and the software will continue processing the rest of your participants. This keeps your registration and results flow moving even if there are data entry errors in your database.</p>\n</li>\n<li class=\"\">\n<p><strong>Accurate Error Reporting for Online Downloads:</strong> We have fixed a bug where the <strong>Runtime Validator</strong> would point to the wrong record number (often \"Record 0\") when reporting data errors during an online download.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed External Timer \"Event(TM)\" Crash:</strong> We have resolved a bug that caused RunScore to crash when selecting the <strong>Event(TM)</strong> option in the External Timers setup (common for <strong>Time Machine</strong>, <strong>iPico</strong>, and <strong>MyLaps</strong> users).</p>\n</li>\n<li class=\"\">\n<p><strong>Enhanced Stability for Cloud &amp; Timer Syncs:</strong> We have resolved a crash that could occur when RunScore needed to ask you an \"event mapping\" question (like \"Which event should this data go to?\") while a background task was running. Previously, if a background process, like a cloud download or a timing hardware feed, tried to open a pop-up window at the same time the main interface was busy, it could cause a conflict that crashed the software.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Role Table Crashes &amp; Menu Availability:</strong> We have resolved a technical \"memory conflict\" that could cause RunScore to crash when editing user roles or permissions. Previously, changing a role's name could occasionally \"confuse\" the computer's memory, leading to an unexpected shutdown. We've redesigned how these tables are managed to be much safer and more efficient. Additionally, we've \"unlocked\" the Clients and Roles table menus so they are always available for editing, even if you aren't currently connected to a remote timing server.</p>\n</li>\n<li class=\"\">\n<p><strong>Improved \"Black Box\" Crash Reporting:</strong> We've upgraded RunScore's internal \"flight recorder\" (BugSplat) to be more consistent. Previously, certain types of rare errors would cause the software to close without sending us a detailed diagnostic report. We've standardized the reporting system so that if a crash occurs, the software will always capture the necessary information to help our team fix the issue quickly. We also took the opportunity to \"clean the attic,\" removing some old, unused code to keep the software lean and fast.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Missing Custom Questions (Race Roster):</strong> We have resolved an issue where long custom questions from Race Roster (such as detailed newsletter opt-ins) would occasionally fail to appear when downloading participants. We've increased the character limit for these question titles to ensure that even the most detailed questions are correctly captured and shown in your field-mapping screen.</p>\n</li>\n<li class=\"\">\n<p><strong>Lightning-Fast Email &amp; SMS Status Displays:</strong> We have overhauled how the status bar tracks large email and text message blasts. Previously, if you sent an email to 1,000 participants, the status bar at the bottom of the screen would get \"stuck\" scrolling through every individual email address one by one for over an hour, even though the messages had actually finished sending in under a minute. RunScore is now much smarter. Instead of clogging the display with thousands of lines of text, it dynamically switches to a live counter showing you the exact number of messages sent in real time. Once the blast is finished, a clean summary (e.g., <em>\"Email broadcast complete: 1000 sent\"</em>) stays on screen for 15 seconds. Additionally, all broadcast actions are now permanently logged in your <strong>Runtime Validator</strong> files so you always have a record of what was sent and when.</p>\n</li>\n<li class=\"\">\n<p><strong>Typo Protection for MYLAPS Event Configurations:</strong> We have fixed a bug where a simple text typo in a listing file could cause RunScore to crash. If a non-numeric character (like a letter or a symbol) was accidentally typed into a field expecting a MYLAPS Event ID number, the software would get confused trying to convert the text and shut down unexpectedly. RunScore now sanity-checks this information first. If it detects a bad character, it will pop up a helpful error box to let you know your listing file needs a quick correction, and it will safely stop generating that specific report <em>without</em> crashing the rest of the application.</p>\n</li>\n<li class=\"\">\n<p><strong>Strict Duplicate Bib Prevention in the Browse Window:</strong> We have fixed a data integrity bug where duplicate bib numbers could accidentally be saved if you edited them directly inside the main grid (Browse window). Previously, the software's background uniqueness check was looking at the <em>old</em> value of the field instead of the <em>new</em> value you just typed. Furthermore, it was checking text that hadn't been correctly aligned yet, allowing duplicate numbers to slip through without triggering an alert. RunScore now fully normalizes and scans your inputs instantly when editing directly in the grid, ensuring that a duplicate bib or unique field will always be blocked and flagged before it can cause data conflicts.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Crashes on Absolute External File Links (<code>.include</code>):</strong> We have resolved a memory stability bug that could cause RunScore to crash when processing complex listing setups. If a listing file used an <code>.include</code> command to pull in a report template located <em>outside</em> of the active race directory using an absolute path (for example, pointing directly to a shared drive or a different folder like <code>C:\\GlobalTemplates\\header.txt</code>), the software would miscalculate the text length, read past the end of the file name into uninitialized memory, and crash. RunScore now utilizes an upgraded path-resolution engine that safely checks external and absolute file locations without any risky memory guesswork, ensuring your multi-file results and report templates load seamlessly.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed ChronoTrack (CT) Live Login and Connection Crashes:</strong> We have resolved an issue that prevented RunScore from successfully logging into ChronoTrack Live. The software was reading your saved credentials from the registry but failing to pass them along to the web server, resulting in authentication errors. Additionally, we fixed an intermittent crash that occurred immediately after clicking \"Select Event\" on CT Live downloads. This was caused by an internal file-reading calculation that didn't leave enough room in memory for the downloaded event data. Memory management has been hardened on both the server and remote clients, restoring smooth and stable CT Live synchronization.</p>\n</li>\n<li class=\"\">\n<p><strong>Detailed Connection Error Messages and Crash Fix:</strong> We have resolved a bug where <strong>RSClient</strong> would crash unexpectedly if you entered an invalid or mistyped server name when attempting to connect to a remote race. Instead of shutting down due to the network naming error, RunScore now safely intercepts the failure and checks with Windows to see exactly what went wrong. The software will now stay completely stable and show you a precise, clear error message, such as <em>\"No such host is known\"</em> or <em>\"Network dropped\"</em>, instead of the old generic <em>\"Connection to server has failed\"</em> notification. This makes troubleshooting network setups and connection drops significantly easier.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Screen and Data Entry Configuration Filters (<code>Entries.INI</code>):</strong> We have resolved two legacy bugs within <strong>RSClient</strong>'s screen format and custom form layout parser. Previously, if a data entry profile included a conditional evaluation rule (like checking if a field matched a specific value) but omitted the field declaration line directly above it, remote stations would experience an immediate crash when loading the race. Furthermore, using more than 36 variables (<code>%n</code>) in automated messaging rules could cause internal memory tables to overflow and destabilize the station. Both vulnerabilities have been fully patched with modern safety limits. Remote stations will now intercept malformed or excessive layout commands gracefully and keep running without interruption.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Remote Announcer Screen \"Number Not Found\" Error:</strong> We have resolved a bug where the Announcer window on remote tracking stations (<strong>RSClient</strong>) would stop matching names to bib numbers and display \"Number not found\" for all incoming reads. This was caused by a recent network optimization that introduced an invisible helper character to separate server commands. While this worked great for regular data entry, it left an extra unread character in the live timing feed, throwing the server and client slightly out of step. The software was effectively trying to read the data starting at the wrong letter. We have switched the announcer stream to a dedicated raw data pipeline, removing the extra character and restoring accurate real-time name displays for your announcers.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Awards and Custom Text Uploads to Race Roster:</strong> We have resolved two issues that caused custom text reports (such as a \"Top 3 Overall\" results list) to fail or upload incorrectly to Race Roster. First, the software was accidentally clearing your custom row limits on text files, resulting in the entire participant list exporting instead of just the top winners. Second, background utility reports (like participant exclusion filters) were creating tracking mismatches that caused the final upload to silently fail. Both behaviors have been corrected so that text-based award listings upload smoothly with the exact row constraints you specify.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Application Freezes During \"Update All Entries\":</strong> We have resolved an intermittent bug that could cause RunScore to completely freeze or hang when running the \"Update all entries\" utility. This issue was caused by a highly technical conflict between an automated background timer and the entry processing loop. The background timer, which watches to see if your layout files have changed on disk, was misreading an internal time check due to a memory lifetime glitch. This caused the software to falsely believe you were modifying your configuration files at the exact same fraction of a second it was trying to update your participant database. The two tasks would collide and lock each other up. We have modernized how file times are tracked, ensuring background checks never interfere with active database updates.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Startup Crashes on Double-Launch:</strong> We have resolved a bug that could cause RunScore to crash with an \"Access Violation\" error if the software was launched twice at almost the exact same instant (for example, if a user rapidly double-clicked the shortcut icon or if automated scripts opened multiple windows together). When two instances tried to load their windows, read the computer registry, and check software licenses at the exact same millisecond, they would step on each other's toes and crash. We have added an internal \"gatekeeper\" (a named synchronization mutex). Now, the very first window to open is given exclusive rights to finish loading its files and verify its license while the second window safely waits its turn in the background. Once the first instance finishes initializing, the gate opens, allowing both instances to run smoothly side by side.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Crashes When Switching Between Races:</strong> We have resolved an intermittent bug where RunScore could crash with an \"Access Violation\" error when closing one race database and opening another. This issue occurred if the first race included an Age field on its entry form, but the second race did not. When closing the first race, RunScore was clearing the data from memory but accidentally left behind a \"ghost\" pointer tracking where the old Age field used to live. When the next race opened without an Age field, the system would mistakenly look back at that old, deleted memory location and crash. We have updated the database cleanup sequence so that all internal form coordinates are completely erased the exact millisecond a race is closed, preventing any memory crossover when opening a new file.</p>\n</li>\n<li class=\"\">\n<p><strong>Robust Internet and FTP Disconnect Protection:</strong> We have overhauled how RunScore handles background web uploads when your internet connection suddenly drops or fluctuates mid-race. Previously, if a network dropout occurred while sending results to an FTP server, the software could freeze or crash. This happened because the background network task would get locked waiting for the internet to return, while the main program would simultaneously try to clean up or close the race, leading to an internal memory conflict. RunScore now includes strict network timeout controls. If your connection cuts out, the software drops the stalled socket instantly, safely preserves your background upload queue using a decoupled memory snapshot, and ensures the program remains completely stable and responsive so you can keep timing your event offline.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Data Corruption on Custom Questions with Commas:</strong> We have resolved a text-parsing bug where downloading participant records could cause data to become shifted, cut off, or corrupted if a field contained text inside quotation marks with commas in it. For example, if a participant selected a descriptive checkbox or waiver text like <em>\"Neurodivergent (Autism, Down Syndrome, Other)\"</em>, RunScore's import utility would misinterpret those internal commas as column separators, even though the text was wrapped safely in quotes. This threw the remaining columns out of alignment. We have rewritten the text classification engine to properly recognize quotation barriers, ensuring text options containing commas are imported exactly as intended without breaking the row layout.</p>\n</li>\n<li class=\"\">\n<p><strong>Fixed Data Search Crashes on Right-Aligned Fields:</strong> We have resolved a bug where attempting to search or filter data inside right-aligned fields (such as certain bib number or custom division columns) could cause RunScore to crash unexpectedly. This was caused by an outdated text-handling rule left over from an older version of the software. When performing a search in these columns, the program would try to clear out trailing spaces by targeting a character slot that didn't actually exist in memory. This corrupted the software's immediate workspace and forced a shutdown. RunScore now uses a modernized, auto-protecting boundary check when processing your search queries, keeping the application perfectly stable.</p>\n</li>\n<li class=\"\">\n<p><strong>Wireless Disconnect and Crash Protection:</strong> We fixed an issue where a remote device losing its WiFi connection mid-race could cause the RunScore server to crash. Previously, a sudden wireless dropout could leave garbled data in the network pipeline. Upon reconnection, the server would misinterpret this corrupt data as an invalid competitor number, causing the program to freeze. RunScore now automatically clears network memory on disconnect and strictly validates all incoming data. The software safely ignores corrupt requests, ensuring your timing environment remains completely stable.</p>\n</li>\n<li class=\"\">\n<p><strong>1-Mile Age-Grade Accuracy Fix:</strong> We corrected an issue where male age-grade percentages and award rankings for 1-mile races were calculated incorrectly. A previous data update accidentally applied female scoring factors and an incorrect baseline time to the male 1-mile division. RunScore now uses the official 2025 WMA scoring tables, ensuring accurate results and fair standings for all competitors.</p>\n</li>\n<li class=\"\">\n<p><strong>Data Entry Screen Reset Fix:</strong> We resolved an issue where saving a participant record (using F10 or F12) could cause the data entry screen to lock up or fail to advance to the next entry. This occurred on race configurations using specific blank or right-justified fields. Upon saving, a background safety check would mistake the freshly cleared screen for an error, blocking RunScore from generating the next automatic bib number or resetting the workspace. The entry screen now resets instantly and smoothly after every save. Additionally, error logs for AltKey configuration issues will now display the exact file path, making startup errors much faster to locate and fix.</p>\n</li>\n<li class=\"\">\n<p><strong>Search Stability Fix:</strong> We resolved an intermittent crash that could occur when performing specific database searches. The system now automatically validates all search parameters behind the scenes, ensuring the program remains completely stable during complex queries.</p>\n</li>\n<li class=\"\">\n<p><strong>Live Results Scrolling Stability:</strong> We fixed a crash that occurred when the scrolling Live Results board displayed multiple time splits or calculated columns (such as triathlon splits or gun-minus-chip net times). Previously, the background timer could trigger an internal memory deadlock when simultaneously refreshing multiple time intervals on the same line, causing the display to freeze or close unexpectedly. RunScore now safely isolates these time calculations behind the scenes and includes automatic error recovery, ensuring your results boards scroll smoothly and reliably throughout the event.</p>\n</li>\n<li class=\"\">\n<p><strong>Decommissioned Registration Platforms Cleaned Up:</strong> We have completely removed integration code for several discontinued, non-operational third-party online registration platforms, including GetMeRegistered, Active (ActiveWorks), ZapEvent, and imATHLETE. Because these external services are no longer in business, removing them allows us to clean up the software menus, reduce background overhead, and significantly speed up system load times.</p>\n</li>\n</ol>",
            "url": "https://docs.runscore.com/changelog/9.0.1",
            "title": "9.0.1",
            "summary": "RunScore 9.0.1 is a major race-day stability patch. We've eliminated the reported mid-race crashes, made the system highly resilient to bad internet and hardware disconnects, and added protections so simple human errors no longer take down your software.",
            "date_modified": "2026-06-25T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/9.0.0",
            "content_html": "<p>We are incredibly excited to unveil RunScore 9.0.0! A release that marks the beginning of a new chapter. This isn't just an update; it's a complete evolution of the software you've relied on for decades.</p>\n<p>This version delivers 188 epics, bug fixes, and major improvements. We have focused on extreme performance, absolute data integrity, and a new community-focused model that makes RunScore accessible to everyone.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"-runscore-is-now-free\">🆓 RunScore is Now Free<a href=\"https://docs.runscore.com/changelog/9.0.0#-runscore-is-now-free\" class=\"hash-link\" aria-label=\"Direct link to 🆓 RunScore is Now Free\" title=\"Direct link to 🆓 RunScore is Now Free\" translate=\"no\">​</a></h2>\n<p>The annual license model is officially retired. We believe the best timing tools should be available to every timer, everywhere.</p>\n<ul>\n<li class=\"\"><strong>No Annual License Fees:</strong> RunScore is now a free service.</li>\n<li class=\"\"><strong>One-Time Sign-Up:</strong> We've replaced the annual payment process with a simple, one-time Sign-Up form built directly into the application.</li>\n<li class=\"\"><strong>Fleet-Wide Licensing:</strong> Once you sign up, your license is valid for your <strong>entire laptop fleet</strong>. No more managing individual keys for secondary machines or finish-line backups.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"️-mylaps-cloud-timing-in-2-minutes\">☁️ MYLAPS Cloud: Timing in 2 Minutes<a href=\"https://docs.runscore.com/changelog/9.0.0#%EF%B8%8F-mylaps-cloud-timing-in-2-minutes\" class=\"hash-link\" aria-label=\"Direct link to ☁️ MYLAPS Cloud: Timing in 2 Minutes\" title=\"Direct link to ☁️ MYLAPS Cloud: Timing in 2 Minutes\" translate=\"no\">​</a></h2>\n<p>Our new <strong>MYLAPS Cloud integration</strong> is designed for speed.</p>\n<ul>\n<li class=\"\"><strong>Automated Setup:</strong> The application does most of the heavy lifting. You can be up and running with cloud-ingested data in about <strong>two minutes</strong>.</li>\n<li class=\"\"><strong>Bib or Chip Selection:</strong> The integration now functions like a standard local connection, allowing you to configure the system for either Bib or Chip timing.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"-precision--data-integrity\">🎯 Precision &amp; Data Integrity<a href=\"https://docs.runscore.com/changelog/9.0.0#-precision--data-integrity\" class=\"hash-link\" aria-label=\"Direct link to 🎯 Precision &amp; Data Integrity\" title=\"Direct link to 🎯 Precision &amp; Data Integrity\" translate=\"no\">​</a></h2>\n<p>We've addressed long-standing \"silent\" issues to ensure your results are 100% accurate.</p>\n<ul>\n<li class=\"\"><strong>The \"31-Day\" Age Fix:</strong> Older versions used a mathematical approximation for age calculation (treating every month as 31 days). This could occasionally place a participant in the wrong division. Version 9.0.0 uses exact SystemTime logic, correctly accounting for <strong>30 vs. 31-day months and leap years</strong>.</li>\n<li class=\"\"><strong>Advanced Runtime Validator (RTV):</strong>\n<ul>\n<li class=\"\"><strong>Undefined Variables:</strong> The RTV now flags custom variables that have not been defined.</li>\n<li class=\"\"><strong>Ambiguity Alerts:</strong> It will warn you if a variable name creates ambiguity with <strong>RSM parameter replacements</strong> (like %1 or %a), preventing logic errors in your listings.</li>\n</ul>\n</li>\n<li class=\"\"><strong>Corruption Prevention:</strong> The <strong>Enter Window</strong> now verifies if a record is completely empty before saving. This prevents the \"blank record\" bug that could previously lead to database corruption.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"️-stability-networking-and-best-practices\">🛡️ Stability, Networking, and Best Practices<a href=\"https://docs.runscore.com/changelog/9.0.0#%EF%B8%8F-stability-networking-and-best-practices\" class=\"hash-link\" aria-label=\"Direct link to 🛡️ Stability, Networking, and Best Practices\" title=\"Direct link to 🛡️ Stability, Networking, and Best Practices\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"important-update-on-this-release\">Important Update on This Release<a href=\"https://docs.runscore.com/changelog/9.0.0#important-update-on-this-release\" class=\"hash-link\" aria-label=\"Direct link to Important Update on This Release\" title=\"Direct link to Important Update on This Release\" translate=\"no\">​</a></h3>\n<p>We've shipped some great improvements and want to share a few tips to get the most reliable results on race day.</p>\n<p><strong>What's New</strong></p>\n<ul>\n<li class=\"\"><strong>Rock-Solid Server ↔ Client Connection:</strong> RSServer and RSClient now talk to each other more reliably, even when a lot of data is flying between them (big events, lots of reads, busy networks).</li>\n<li class=\"\"><strong>No More \"Bad Data\" Crashes:</strong> If your timing hardware (ChronoTrack, race|result, etc.) sends an oversized bib or a weird/malformed read, RunScore will now shrug it off instead of crashing.</li>\n<li class=\"\"><strong>Windows Remember Their Size:</strong> Your Browse, Enter, and Listing windows now remember the size and position you set <strong>per race</strong>. Set them up once the way you like, and they'll come back that way next time you open that race.</li>\n</ul>\n<p><strong>A Few Best-Practice Reminders:</strong> Behind the scenes, RSClient doesn't actually do the \"work\" itself — it asks RSServer to do everything for it over the network. That's great for viewing data, but it means some things are safer and faster when done directly on RSServer.</p>\n<p><strong>Here's our recommended setup:</strong></p>\n<div class=\"theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><svg viewBox=\"0 0 12 16\"><path fill-rule=\"evenodd\" d=\"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z\"></path></svg></span>Use RSClient for (viewing only)</div><div class=\"admonitionContent_BuS1\"><ul>\n<li class=\"\">Announcer station</li>\n<li class=\"\">Live Results display</li>\n<li class=\"\">A second screen to watch Browse/results come in</li>\n<li class=\"\">Running listings that only touch fields <strong>not used in results reporting</strong> (e.g., updating Email, City, Shirt Size, etc.)</li>\n</ul></div></div>\n<div class=\"theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><svg viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"></path></svg></span>Please do these on RSServer, not RSClient</div><div class=\"admonitionContent_BuS1\"><ul>\n<li class=\"\"><strong>Entering or editing participants</strong> (especially Age, Bib, Gender, Start/Finish times). There is a known gap in how entries flow from Client → Server that can affect age-group processing. Until that's fully closed out, please do entry work on the server.</li>\n<li class=\"\"><strong>Sending SMS or Email</strong> — always from RSServer. Sending from the Client adds complexity and isn't as reliable.</li>\n<li class=\"\"><strong>Auto-Run</strong> — always from RSServer.</li>\n</ul></div></div>\n<div class=\"theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary\"><div class=\"admonitionHeading_Gvgb\"><span class=\"admonitionIcon_Rf37\"><svg viewBox=\"0 0 14 16\"><path fill-rule=\"evenodd\" d=\"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"></path></svg></span>RSClient vs RSServer</div><div class=\"admonitionContent_BuS1\"><p><strong>RSClient</strong> = a window to <strong>look</strong> at the race. <strong>RSServer</strong> = where you <strong>run</strong> the race. When in doubt, do it on the server.</p></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"-a-special-thank-you\">🤝 A Special Thank You<a href=\"https://docs.runscore.com/changelog/9.0.0#-a-special-thank-you\" class=\"hash-link\" aria-label=\"Direct link to 🤝 A Special Thank You\" title=\"Direct link to 🤝 A Special Thank You\" translate=\"no\">​</a></h2>\n<p>This release wouldn't have been possible without our incredible community.</p>\n<ul>\n<li class=\"\"><strong>Beta-Timers Group:</strong> A massive thank you to our beta testers for their rigorous reporting and feedback.</li>\n</ul>\n<p><strong>RunScore 9.0.0 is the most stable, fastest, and most accessible version of RunScore ever built. We are proud to put these tools in your hands for free.</strong></p>",
            "url": "https://docs.runscore.com/changelog/9.0.0",
            "title": "9.0.0",
            "summary": "We are incredibly excited to unveil RunScore 9.0.0! A release that marks the beginning of a new chapter. This isn't just an update; it's a complete evolution of the software you've relied on for decades.",
            "date_modified": "2026-04-21T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.4.3",
            "content_html": "<p>We are excited to announce RunScore version 8.4.3. This update focuses heavily on improving stability and reliability while introducing key features to make your race-timing workflow smoother and faster.</p>\n<p>You should notice a significant reduction in unexpected crashes, better performance, and several quality-of-life improvements across the application.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"️-crucial-installation-improvement\">🛠️ Crucial Installation Improvement<a href=\"https://docs.runscore.com/changelog/8.4.3#%EF%B8%8F-crucial-installation-improvement\" class=\"hash-link\" aria-label=\"Direct link to 🛠️ Crucial Installation Improvement\" title=\"Direct link to 🛠️ Crucial Installation Improvement\" translate=\"no\">​</a></h2>\n<p>We found that many users were experiencing errors or unexpected crashes. This often happened because their computer either didn't have this necessary Microsoft component installed, or it had an older version that wasn't fully compatible with the latest RunScore features.</p>\n<p>The update was made because <strong>RunScore needs the latest Microsoft component to work correctly.</strong> Automatically installing the newest version ensures a smooth experience and guarantees stability on all systems. Since this component is from Microsoft, <strong>the installer may ask you to reboot your computer; this is expected and safe, and you can proceed with the reboot when prompted:</strong></p>\n<ul>\n<li class=\"\"><strong>Automatic Microsoft C++ Installation:</strong> The installer will now automatically trigger the installation of the latest Microsoft C++ Redistributables. These are essential components provided by Microsoft that RunScore (and many other programs) relies on to run correctly.</li>\n<li class=\"\"><strong>Preventing Errors:</strong> This change eliminates a common problem where users would see the frustrating VCRUNTIME140.dll error upon launching RunScore.</li>\n<li class=\"\"><strong>Important Note on Installation:</strong> Since the C++ Redistributables are a Microsoft product, the installation may prompt you for a reboot of your computer. This is expected and safe. This step happens after RunScore itself is installed, and you can proceed with the reboot when prompted.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"️-major-improvements-to-the-entry-window\">✏️ Major Improvements to the Entry Window<a href=\"https://docs.runscore.com/changelog/8.4.3#%EF%B8%8F-major-improvements-to-the-entry-window\" class=\"hash-link\" aria-label=\"Direct link to ✏️ Major Improvements to the Entry Window\" title=\"Direct link to ✏️ Major Improvements to the Entry Window\" translate=\"no\">​</a></h2>\n<p>The <strong>Enter Window</strong> (used for single-entry data input) has received significant updates for speed, usability, and stability.</p>\n<ul>\n<li class=\"\"><strong>New Quick-Save Key (F10) and Menu:</strong> You can now press <strong>F10</strong> to instantly save the current record and close the window. The function key menu at the bottom is now fully updated: F3: Search | F4: Update | F7: Ditto | Alt-F7: Ditto Field | F8: Next Number | F9: New Record | F10: Save&amp;Close | F12: Save&amp;New Record</li>\n<li class=\"\"><strong>Improved Search Functionality (F3):</strong> The F3 search is now fixed and improved. You can press F3 repeatedly to cycle quickly through matching records in the browser.</li>\n<li class=\"\"><strong>Window Size Persistence:</strong> The Enter Window will now remember the size you set it to.</li>\n<li class=\"\"><strong>Critical Fix for Lost Records (F12):</strong> We fixed a bug that could cause records to be lost when pressing F12 (Save &amp; New Record), especially if the auto-increment Bib feature was disabled.</li>\n<li class=\"\"><strong>Page Navigation Fix:</strong> Pressing Page Up or Page Down while editing an entry will now correctly save your changes before moving to the next record.</li>\n<li class=\"\"><strong>Optimized F8 Logic:</strong> The logic behind F8 (Next Number) has been refined to more accurately and quickly find the next available bib number.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"️-improved-reliability-and-crash-fixes\">🛡️ Improved Reliability and Crash Fixes<a href=\"https://docs.runscore.com/changelog/8.4.3#%EF%B8%8F-improved-reliability-and-crash-fixes\" class=\"hash-link\" aria-label=\"Direct link to 🛡️ Improved Reliability and Crash Fixes\" title=\"Direct link to 🛡️ Improved Reliability and Crash Fixes\" translate=\"no\">​</a></h2>\n<p>The majority of this update focused on making RunScore more stable and less prone to crashing, especially during live timing and network operations.</p>\n<ul>\n<li class=\"\"><strong>Fixed Live Timing Crashes:</strong> We resolved several issues that could cause RunScore to crash during live results viewing, especially if network connections were lost or if results were being updated while being painted on the screen.</li>\n<li class=\"\"><strong>Prevented Data Corruption:</strong> We modernized the core of the application to prevent memory corruption. This eliminates several rare but serious crashes that were difficult to track down.</li>\n<li class=\"\"><strong>Safer Race Closure:</strong> Closing a race is now a more secure process, preventing rare crashes that could occur when the timer or browser features were active simultaneously.</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"better-error-handling-on-downloads\">Better Error Handling on Downloads<a href=\"https://docs.runscore.com/changelog/8.4.3#better-error-handling-on-downloads\" class=\"hash-link\" aria-label=\"Direct link to Better Error Handling on Downloads\" title=\"Direct link to Better Error Handling on Downloads\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Clearer Messages for Online Downloads:</strong> When downloading participants from an online system (like RunSignUp), RunScore will now display the specific error message if the online system sends an error or badly formatted data.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"-general-workflow-and-user-experience-improvements\">🏃 General Workflow and User Experience Improvements<a href=\"https://docs.runscore.com/changelog/8.4.3#-general-workflow-and-user-experience-improvements\" class=\"hash-link\" aria-label=\"Direct link to 🏃 General Workflow and User Experience Improvements\" title=\"Direct link to 🏃 General Workflow and User Experience Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>\"Ignore All\" for Race Roster:</strong> The \"Ignore All\" button during Race Roster downloads now works correctly, allowing you to bypass unwanted mapping prompts more efficiently.</li>\n<li class=\"\"><strong>Enhanced Browser Sorting:</strong> In the Client, the browser now supports both A to Z and Z to A sorting of records, matching the functionality of the Server side.</li>\n<li class=\"\"><strong>More Reliable Command Selection in File Editor:</strong> If you have the \"type-ahead\" feature disabled, the command selection box in the file editor will now correctly refresh as you type.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"️-other-notable-changes\">⚙️ Other Notable Changes<a href=\"https://docs.runscore.com/changelog/8.4.3#%EF%B8%8F-other-notable-changes\" class=\"hash-link\" aria-label=\"Direct link to ⚙️ Other Notable Changes\" title=\"Direct link to ⚙️ Other Notable Changes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>TFRRS Login Fix:</strong> We fixed an issue that prevented logging into TFRRS when your password contained special characters.</li>\n<li class=\"\"><strong>Team Position Correction:</strong> The <strong>TEAM POSITION</strong> command will now produce the correct results after a typo was fixed in the underlying code.</li>\n<li class=\"\"><strong>Real-Time Clock Fix:</strong> The main RunScore clock will now continue to refresh even after a race has been closed.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.4.3",
            "title": "8.4.3",
            "summary": "We are excited to announce RunScore version 8.4.3. This update focuses heavily on improving stability and reliability while introducing key features to make your race-timing workflow smoother and faster.",
            "date_modified": "2025-10-29T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.4.2",
            "content_html": "<p>RunScore 8.4.2 delivers one of the most comprehensive stability and performance updates in recent history, with 41 tracked improvements addressing long-standing crash scenarios and inconsistencies.</p>\n<p>This release strengthens the system's internal architecture, improves crash resistance and file handling, and lays technical groundwork for upcoming feature expansion.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"top-5-enhancements\">Top 5 Enhancements<a href=\"https://docs.runscore.com/changelog/8.4.2#top-5-enhancements\" class=\"hash-link\" aria-label=\"Direct link to Top 5 Enhancements\" title=\"Direct link to Top 5 Enhancements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Crash Resilience Significantly Boosted:</strong> Over a dozen unique crash scenarios were investigated and resolved, including critical failures tied to result synchronization, socket closures, race entry handling, and null pointer exceptions.</li>\n<li class=\"\"><strong>CSV and File Handling Upgrades:</strong> RunScore now pre-validates inputs, prevents mismatched formats from causing crashes, and gracefully informs users when critical files are missing or empty.</li>\n<li class=\"\"><strong>Security and Architecture Modernization:</strong> Legacy modules such as the outdated SMTP project have been removed. Core constructors were updated to follow modern coding conventions.</li>\n<li class=\"\"><strong>More Robust Integrations:</strong> Authentication workflows have been updated to support longer tokens and improved API conformance for third-party platforms.</li>\n<li class=\"\"><strong>Better User Feedback and Interface Logic:</strong> The application now provides clear warnings when outdated or malformed event files are loaded and prevents unintended execution when the user cancels an action.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"quality-and-testing\">Quality and Testing<a href=\"https://docs.runscore.com/changelog/8.4.2#quality-and-testing\" class=\"hash-link\" aria-label=\"Direct link to Quality and Testing\" title=\"Direct link to Quality and Testing\" translate=\"no\">​</a></h2>\n<p>This release was subjected to an extended beta program consisting of:</p>\n<ul>\n<li class=\"\">2 Beta builds</li>\n<li class=\"\">2 Release Candidates</li>\n<li class=\"\">1 Final release build</li>\n</ul>\n<p>Across these builds, 20 confirmed bugs were resolved and 21 engineering tasks were completed. The scope of work includes everything from crash tracing to usability edge cases.</p>\n<p><strong>RunScore 8.4.2</strong> is an essential upgrade for all users. With dramatically improved crash resistance, smarter file handling, and the technical groundwork laid for a major new capability, this version positions the platform for smoother timing operations today and exciting growth tomorrow.</p>",
            "url": "https://docs.runscore.com/changelog/8.4.2",
            "title": "8.4.2",
            "summary": "RunScore 8.4.2 delivers one of the most comprehensive stability and performance updates in recent history, with 41 tracked improvements addressing long-standing crash scenarios and inconsistencies.",
            "date_modified": "2025-07-31T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.4.1",
            "content_html": "<p>Over the last ten months, our team has focused on a significant issue affecting application stability: <strong>memory management</strong>. Almost all (96%) of our problems stemmed from insufficient memory management.</p>\n<p>With version 8.4.1, we aim for enhanced stability that RunScore has never experienced. We fixed 157 issues spanning memory modernization, runtime validation, entries processing, the Enter screen, and a new results management feature.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"main-changes\">Main Changes<a href=\"https://docs.runscore.com/changelog/8.4.1#main-changes\" class=\"hash-link\" aria-label=\"Direct link to Main Changes\" title=\"Direct link to Main Changes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Memory management modernization</strong></li>\n<li class=\"\"><strong>Runtime Validation rework</strong> based on user feedback</li>\n<li class=\"\"><strong>Entries processing</strong> bug fixes and improvements</li>\n<li class=\"\"><strong>Enter screen</strong> bug fixes and improvements</li>\n<li class=\"\"><strong>New feature:</strong> results management</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"important-notice-sdl-checks\">Important Notice: SDL Checks<a href=\"https://docs.runscore.com/changelog/8.4.1#important-notice-sdl-checks\" class=\"hash-link\" aria-label=\"Direct link to Important Notice: SDL Checks\" title=\"Direct link to Important Notice: SDL Checks\" translate=\"no\">​</a></h2>\n<p>The SDL checks implement additional security measures at runtime to ensure the application does not perform actions outside the allocated memory space.</p>\n<p>This is important because the LINE FEED command \"appeared to work\" in the previous version, but in reality, the code accessed memory outside the allocated range. Such issues can lead to crashes, data corruption, and security vulnerabilities.</p>\n<p>The correct usage is: <code>LINE FEED 2</code></p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"runtime-validator-improvements\">Runtime Validator Improvements<a href=\"https://docs.runscore.com/changelog/8.4.1#runtime-validator-improvements\" class=\"hash-link\" aria-label=\"Direct link to Runtime Validator Improvements\" title=\"Direct link to Runtime Validator Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">The RunScore was improved to help users detect errors in listing files.</li>\n<li class=\"\">We added the ability to detect if a command is missing an argument. If so, the default argument will be used (empty for strings, zero for numbers, and false for flags). The user will be informed about this.</li>\n<li class=\"\">We have replaced the pop-ups with a carousel gadget, which will briefly describe the encountered issue.</li>\n<li class=\"\">We added event logs containing detailed information about the issue and the event code.</li>\n<li class=\"\">We added the event code table in the help manual with instructions on how to solve the issue.</li>\n<li class=\"\">We introduced a runtime handler for processing the Entries.ini file (for instance, incorrectly formatted race dates or missing Age and Birthdate fields).</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"critical-priority-issues\">Critical-Priority Issues<a href=\"https://docs.runscore.com/changelog/8.4.1#critical-priority-issues\" class=\"hash-link\" aria-label=\"Direct link to Critical-Priority Issues\" title=\"Direct link to Critical-Priority Issues\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>SDL issues:</strong> Resolved all security-related problems in the RunScore code, including buffer overflows and out-of-bounds access.</li>\n<li class=\"\"><strong>Command suggestion for file edit:</strong> Fixed memory corruption when the Command Search feature copied a mismatched vector size.</li>\n<li class=\"\"><strong>Fixed the operations in Entries.DTA:</strong> Not all code was invoking the correct system calls designed for shared files.</li>\n<li class=\"\"><strong>Fixed auto-run and incremental upload:</strong> The functionality was not thread-safe, leading to unpredictable results.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"high-priority-bug-fixes\">High-Priority Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.4.1#high-priority-bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to High-Priority Bug Fixes\" title=\"Direct link to High-Priority Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">Fixed parameters handling that led to \"Warning: cannot find the file.\"</li>\n<li class=\"\">Fixed the label printer destination when the printer controller disregarded user instructions.</li>\n<li class=\"\">Fixed issues related to Server-Client interaction and connectivity.</li>\n<li class=\"\">The server will drop all connections with Clients if one is disconnected.</li>\n<li class=\"\">The client was not checking the send and receive TCP/IP function returns.</li>\n<li class=\"\">The connectivity gadget was not in sync with the actual connection status.</li>\n<li class=\"\">Fixed the WinHttpReceiveResponse issue so users receive the correct error message.</li>\n<li class=\"\">Fixed memory leaks and corruption for Announcer, Live Results, SMS LookUp, Enter screen DB search, command search, and Entries.ini processing.</li>\n<li class=\"\"><strong>Fixed 50 distinct BugSplat crash reports</strong></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"medium-priority-bug-fixes\">Medium-Priority Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.4.1#medium-priority-bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Medium-Priority Bug Fixes\" title=\"Direct link to Medium-Priority Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">Fixed printer margin commands for label printing.</li>\n<li class=\"\">Fixed proper text formatting (e.g., addresses like \"321 Pine St SE\").</li>\n<li class=\"\">We added 268 unit tests with 1435 assertions (689 total unit tests with 3963 assertions).</li>\n<li class=\"\">Design screen bug fixes</li>\n<li class=\"\">Fixed promo code retrieval from RaceRoster</li>\n<li class=\"\">Header title initialization for print or online reports</li>\n<li class=\"\">Fixed destination command handling</li>\n<li class=\"\">Updated URN usage: the default is 0; negative profile values change to zero</li>\n<li class=\"\">Fixed team place command processing</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"new-features-and-improvements\">New Features and Improvements<a href=\"https://docs.runscore.com/changelog/8.4.1#new-features-and-improvements\" class=\"hash-link\" aria-label=\"Direct link to New Features and Improvements\" title=\"Direct link to New Features and Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">Added ability to keep results on DB clean; users can select: always keep, always delete, or always ask.</li>\n<li class=\"\">Increased SMS length from 80 to 160</li>\n<li class=\"\">Added the ability to select from available results in the \"View Online Results\" feature (RaceRoster online system)</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"deprecated-functionality\">Deprecated Functionality<a href=\"https://docs.runscore.com/changelog/8.4.1#deprecated-functionality\" class=\"hash-link\" aria-label=\"Direct link to Deprecated Functionality\" title=\"Direct link to Deprecated Functionality\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">The RunScore SMTP (email) service has been deprecated in version 8.4.1. It is advisable to utilize Race Roster email campaigns with results or consider SendGrid as an alternative. The functionality was removed in 8.4.2.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.4.1",
            "title": "8.4.1",
            "summary": "Over the last ten months, our team has focused on a significant issue affecting application stability: memory management. Almost all (96%) of our problems stemmed from insufficient memory management.",
            "date_modified": "2025-05-14T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.4.0",
            "content_html": "<p>The main goal of this release was to improve the program's stability. RunScore 8.4.0 performs runtime checks before operating with memory and will terminate the application if memory corruption is detected, rather than continuing with undefined behaviour.</p>\n<p>Starting with this release, RunScore adopts <a href=\"https://semver.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Semantic Versioning 2.0.0</a>. Our team addressed 128 issues to eliminate unpredictable behaviour and outdated code that could cause crashes.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"new-features-and-improvements\">New Features and Improvements<a href=\"https://docs.runscore.com/changelog/8.4.0#new-features-and-improvements\" class=\"hash-link\" aria-label=\"Direct link to New Features and Improvements\" title=\"Direct link to New Features and Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Teams Enhancement:</strong> Incremental download for teams, selective event download, enhanced download dialog with progress information, and browser auto-refresh after team download completes.</li>\n<li class=\"\"><strong>The Runtime Validator (RV):</strong> Checks if result events are configured correctly, reviews entries.ini for control section errors, and verifies listing file parameters. Errors display once per race session. Enabled by default in preferences.</li>\n<li class=\"\"><strong>Server-Client Interaction:</strong> The Client will now inform the timer if the connection is lost.</li>\n<li class=\"\"><strong>Dual Posting:</strong> Added ability to post results on RaceRoster when the registration system differs from RaceRoster.</li>\n<li class=\"\"><strong>Warning Free:</strong> Resolved all level 1 to 3 warnings.</li>\n<li class=\"\"><strong>Unit Tests:</strong> Added 421 unit tests with 2528 assertions.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"critical-priority-issues\">Critical-Priority Issues<a href=\"https://docs.runscore.com/changelog/8.4.0#critical-priority-issues\" class=\"hash-link\" aria-label=\"Direct link to Critical-Priority Issues\" title=\"Direct link to Critical-Priority Issues\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Better Integration with Windows 10:</strong> Upgraded build tools from XP to Win10 with C++14 and the latest SDK 10.</li>\n<li class=\"\"><strong>Code Modernization:</strong> Replaced old C98 functions with modern and secure C++ versions per ISO C++ standards.</li>\n<li class=\"\"><strong>Major Code Improvements:</strong> Corrected constructors and destructors; resolved uninitialized members/variables, inconsistent memory management, and array index out of range issues.</li>\n<li class=\"\"><strong>Upgrade of Object Windows Library (OWL):</strong> From 6.44.4 (2019) to 6.44.23 (2024).</li>\n<li class=\"\"><strong>Upgrade of BugSplat Library:</strong> From 3.13 (2019) to 5.7.1 (2024).</li>\n<li class=\"\"><strong>Fixed Heap Corruption:</strong> The main reason for random crashes in older versions.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"high-priority-bug-fixes\">High-Priority Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.4.0#high-priority-bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to High-Priority Bug Fixes\" title=\"Direct link to High-Priority Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">Fixed Client crashes when interacting with the server.</li>\n<li class=\"\">Fixed issues and crashes related to results posting.</li>\n<li class=\"\">Fixed issues related to entries.ini and listing processing.</li>\n<li class=\"\">Fixed 37 distinct BugSplat crash reports.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"medium-priority-bug-fixes\">Medium-Priority Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.4.0#medium-priority-bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Medium-Priority Bug Fixes\" title=\"Direct link to Medium-Priority Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>TCP/IP Error Handling:</strong> Added code to check for lost connection or corrupt data transfer between Server and Client.</li>\n<li class=\"\"><strong>WinHTTP Error Handling:</strong> Added code to check for errors when downloading participants or uploading results to online systems.</li>\n<li class=\"\"><strong>Network Resources Release:</strong> Added code to properly release network resources when closing a connection.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.4.0",
            "title": "8.4.0",
            "summary": "The main goal of this release was to improve the program's stability. RunScore 8.4.0 performs runtime checks before operating with memory and will terminate the application if memory corruption is detected, rather than continuing with undefined behaviour.",
            "date_modified": "2024-09-27T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.7.5",
            "content_html": "<p>RunScore 8.3.7.5 focuses on stability fixes for Server-Client connectivity, team downloads, chip data processing, and Entries.ini validation, plus improvements for error messages, printer handling, and MyLaps connections.</p>\n<p>This release resolves six critical crash scenarios and adds four enhancements for clearer diagnostics and more reliable external timer connectivity.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.7.5#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1410 — Server Connectivity After Incorrect Password:</strong> The Client can now reconnect after an incorrect password entry. Also warns when Server and Client versions differ.</li>\n<li class=\"\"><strong>RS-1429 — Team Download Data Corruption:</strong> Team data is now appended to the database instead of replacing it, so teams coexist with regular participants.</li>\n<li class=\"\"><strong>RS-1432 — Announcer Lap Time Display:</strong> Fixed invisible Last Lap Time, Fastest Lap Time, and Average Lap Time text on back-colored backgrounds.</li>\n<li class=\"\"><strong>RS-1437 — File Lookup Crash:</strong> Added parameter sanitization before Windows <code>FindFirstFileA</code> calls.</li>\n<li class=\"\"><strong>RS-1439 — Chip Data Processing Crash:</strong> Prevents crashes when external timer reports a location not mapped to RunScore time events.</li>\n<li class=\"\"><strong>RS-1447 — Invalid Entries.ini [Control] Section:</strong> Shows a clear error instead of crashing when a SELECT field is missing an argument.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.7.5#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1448 — Missing Include File Errors:</strong> Error messages now show the full file path, failed command argument, and accurate line number.</li>\n<li class=\"\"><strong>RS-1449 — Printer Information Heap Corruption:</strong> Refactored printer-specific-information class to prevent double-delete heap corruption during email/SMS campaigns.</li>\n<li class=\"\"><strong>RS-1466 — MyLaps Connection Loss:</strong> Displays only one error message when multiple connection losses occur.</li>\n<li class=\"\"><strong>RS-1473 — Socket Auto-Recovery:</strong> Server auto-recovers from Windows OS-initiated socket closures with informative error messages.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.7.5",
            "title": "8.3.7.5",
            "summary": "RunScore 8.3.7.5 focuses on stability fixes for Server-Client connectivity, team downloads, chip data processing, and Entries.ini validation, plus improvements for error messages, printer handling, and MyLaps connections.",
            "date_modified": "2024-02-08T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.7.4",
            "content_html": "<p>RunScore 8.3.7.4 resolves critical crashes when viewing results from the Client and when receiving null point-of-read data from external timers.</p>\n<p>This release also improves ChronoTrack and MyLaps connectivity with real-time status display, support for up to 50 simultaneous connections, and automatic reconnection within 20 seconds.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.7.4#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1407 — Client Results View Crash:</strong> Fixed memory corruption in the paint function by moving pointer allocation from stack to heap memory.</li>\n<li class=\"\"><strong>RS-1411 — External Timer Null Point of Read:</strong> Added input sanitization when external timers (e.g., MyLaps) send a null point of read such as \"5KSplit\".</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.7.4#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1393, RS-1402 — Simple Client and Fusion Differentiation:</strong> RunScore now distinguishes Simple Client (0.6.0) from Fusion (1.2.3), displays real-time connection status, and supports up to 50 mixed connections on the same port.</li>\n<li class=\"\"><strong>RS-1421 — Connection Termination Handling:</strong> When a connection closes, RunScore releases resources and re-initiates the server on the designated port, enabling MyLaps to reconnect within 20 seconds.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.7.4",
            "title": "8.3.7.4",
            "summary": "RunScore 8.3.7.4 resolves critical crashes when viewing results from the Client and when receiving null point-of-read data from external timers.",
            "date_modified": "2023-11-11T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.7.3",
            "content_html": "<p>RunScore 8.3.7.3 addresses critical stability issues including race-closure crashes, ghost processes in Task Manager, Live Results navigation failures, and listing file exception handling.</p>\n<p>This release also adds configuration improvements for events, external timers, ignored chip reads, and the installer package.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.7.3#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1199 — Race Closure and Ghost Application:</strong> Improved thread and socket shutdown so listening threads terminate gracefully and no ghost process remains in Task Manager.</li>\n<li class=\"\"><strong>RS-1378 — Live Results and Navigation:</strong> Fixed \"device not ready\" errors and empty-screen navigation issues by adding a proper results class copy constructor.</li>\n<li class=\"\"><strong>RS-1384 — Listing File Exceptions:</strong> Application now reports exceptions instead of crashing due to buffer overflow in exception messages.</li>\n<li class=\"\"><strong>RS-1389 — Team Score Export:</strong> Team score exports now correctly start from 1st place instead of 2nd.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.7.3#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1305 — Pre-Event NONE Option:</strong> Users can set pre-event to \"NONE\" via Tools → Miscellaneous → Edit list of Events.</li>\n<li class=\"\"><strong>RS-1377 — Installer Race Templates:</strong> Added missing races including the XCAthleticNet race to the installer package.</li>\n<li class=\"\"><strong>RS-1381 — External Timers:</strong> Increased supported external timers from 4 to 8.</li>\n<li class=\"\"><strong>RS-1386 — View Ignored Chip Reads:</strong> Users can review ignored chip reads with bib, event, reason, and raw data via Miscellaneous → View/Edit Ignored Chips.</li>\n<li class=\"\"><strong>RS-1387 — Persistent Start/Stop Flags:</strong> External timer Start/Stop selections persist when auto-enable on start-up is enabled.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.7.3",
            "title": "8.3.7.3",
            "summary": "RunScore 8.3.7.3 addresses critical stability issues including race-closure crashes, ghost processes in Task Manager, Live Results navigation failures, and listing file exception handling.",
            "date_modified": "2023-10-30T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.7.2",
            "content_html": "<p>RunScore 8.3.7.2 resolves critical crashes during registration processing and duplicate bib handling on the Results screen, and modernizes singleton management and race-folder permission checks.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.7.2#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1335 — Registration Processing Crash:</strong> Added file presence and empty-file checks before JSON parsing, with informative notifications on parse failures.</li>\n<li class=\"\"><strong>RS-1376 — Duplicate Bibs on Results Screen:</strong> Fixed logic for manual entries where time is zero, preventing duplicate bibs on the Results screen.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.7.2#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1350 — Singleton Modernization:</strong> Improved creation and destruction of singletons following modern C++ best practices.</li>\n<li class=\"\"><strong>RS-1368 — Race Folder Permission Checks:</strong> Application now verifies read/write permissions on the race directory and warns users proactively.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.7.2",
            "title": "8.3.7.2",
            "summary": "RunScore 8.3.7.2 resolves critical crashes during registration processing and duplicate bib handling on the Results screen, and modernizes singleton management and race-folder permission checks.",
            "date_modified": "2023-09-27T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.7.1",
            "content_html": "<p>RunScore 8.3.7.1 adds RaceRoster team type name downloads and resolves multiple critical crashes affecting chip data processing, the Announcer screen, browser search, and TFRRS posting.</p>\n<p>This release also improves Announcer command handling for lap races and strengthens runtime memory checks.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"features\">Features<a href=\"https://docs.runscore.com/changelog/8.3.7.1#features\" class=\"hash-link\" aria-label=\"Direct link to Features\" title=\"Direct link to Features\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1318 — RaceRoster Team Type Names:</strong> Retrieves and stores team type names from the RaceRoster API when downloading teams.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.7.1#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1223 — Browser Search Crash:</strong> Fixed crash when searching by column name; informs user if column does not exist.</li>\n<li class=\"\"><strong>RS-1310 — Unregistered Event Chip Data:</strong> Added null checks and notifies user when more than 10 invalid chip reads occur.</li>\n<li class=\"\"><strong>RS-1311 — Chip Time Runtime Crash:</strong> Fixed zero memory allocation on first race run using modern C++ initialization.</li>\n<li class=\"\"><strong>RS-1316 — Announcer Names on Client:</strong> Fixed Client logic so participant names display on the Announcer as they cross the finish line.</li>\n<li class=\"\"><strong>RS-1320 — Gender Display:</strong> Participant gender now shows as M, F, or X instead of enum values.</li>\n<li class=\"\"><strong>RS-1322 — Trial Version Crash:</strong> Fixed uninitialized memory crash for unregistered trial users.</li>\n<li class=\"\"><strong>RS-1328 — Announcer Commands for Lap Races:</strong> New Announcer configuration structure fixes integer overflow in command encoding.</li>\n<li class=\"\"><strong>RS-1340 — TFRRS Empty JSON:</strong> TFRRS JSON data is now stored within the posting thread for accurate output.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.7.1#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RS-1291 — Exception Handling:</strong> Enhanced exception handling for better diagnostics.</li>\n<li class=\"\"><strong>RS-1325 — Runtime Memory Checks:</strong> Added safeguards to detect memory corruption during operations like \"Erase all\" and design screen changes.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.7.1",
            "title": "8.3.7.1",
            "summary": "RunScore 8.3.7.1 adds RaceRoster team type name downloads and resolves multiple critical crashes affecting chip data processing, the Announcer screen, browser search, and TFRRS posting.",
            "date_modified": "2023-09-20T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.7.0",
            "content_html": "<p>RunScore 8.3.7.0 introduces team downloads from RaceRoster and fixes eight bugs affecting results sorting, race opening, data entry, team results posting, import replace, and lap time recording.</p>\n<p>This release also improves error messaging on slow connections and Fusion data transfer performance.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"features\">Features<a href=\"https://docs.runscore.com/changelog/8.3.7.0#features\" class=\"hash-link\" aria-label=\"Direct link to Features\" title=\"Direct link to Features\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RaceRoster Team Download:</strong> New ability to download teams from Race Roster into RunScore team records. See \"Teams Download\" in the help manual.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.7.0#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Results Sorting:</strong> Fixed \"Can't sort empty times\" error caused by incorrect if/else logic.</li>\n<li class=\"\"><strong>Invalid Events.xml:</strong> Prevents crash on race open when pre_event attribute is empty; displays an error message instead.</li>\n<li class=\"\"><strong>Enter Screen Template Crash:</strong> Fixed out-of-bounds memory access when entering data in a record field with a template.</li>\n<li class=\"\"><strong>Team Results Posting:</strong> Fixed bug where only the last report was posted when sending multiple team result sets to RunSignUp.</li>\n<li class=\"\"><strong>Import Replace Crash:</strong> Fixed null pointer crash on Import Replace for races without results.</li>\n<li class=\"\"><strong>Duplicate Lap Times:</strong> Fixed logic so all recorded times for a bib are checked, not just the first.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.7.0#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>HTTPS Error Messages:</strong> Displays only one error message at a time when HTTPS send fails on slow connections, preventing application hang.</li>\n<li class=\"\"><strong>Fusion Data Transfer:</strong> Improved connection handling and data processing speed between RunScore and Fusion.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.7.0",
            "title": "8.3.7.0",
            "summary": "RunScore 8.3.7.0 introduces team downloads from RaceRoster and fixes eight bugs affecting results sorting, race opening, data entry, team results posting, import replace, and lap time recording.",
            "date_modified": "2023-08-30T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.35",
            "content_html": "<p>RunScore 8.3.6.35 adds configurable auto-save intervals as short as six seconds, encrypts crash-report logs to protect personal data, and fixes crashes in the Announcer window, entries.ini lookup, multi-file output, and large RunSignUp downloads.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"whats-new\">What's New<a href=\"https://docs.runscore.com/changelog/8.3.6.35#whats-new\" class=\"hash-link\" aria-label=\"Direct link to What's New\" title=\"Direct link to What's New\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Auto-Save Interval:</strong> Set auto-save of results as short as 0.1 minutes (6 seconds). Recommended for laptops with SSD and 11th Gen CPU.</li>\n<li class=\"\"><strong>Log Encryption:</strong> Crash logs sent to BugSplat are now encrypted to protect personal data such as email addresses. Added libcrypto-3.dll (OpenSSL 3.0.7).</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.6.35#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Announcer Window Crash:</strong> Fixed thread contention between chip data processing and the Announcer during active races.</li>\n<li class=\"\"><strong>entries.ini Lookup:</strong> Fixed code that ignored full-path lookup values (e.g., <code>c:\\runscore\\path</code>).</li>\n<li class=\"\"><strong>Multi-File Output to Editor:</strong> Fixed issue where only the last RSM file output appeared when a listing called multiple RSM files (introduced in 8.3.6.34).</li>\n<li class=\"\"><strong>RunSignUp Partial Download:</strong> Fixed JSON parsing for events with over 1000 participants; reduced chunk size from 1000 to 250 per request.</li>\n<li class=\"\"><strong>Results Class Memory Leak:</strong> Fixed incorrect <code>delete</code> vs <code>delete[]</code> usage in the results class.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.35",
            "title": "8.3.6.35",
            "summary": "RunScore 8.3.6.35 adds configurable auto-save intervals as short as six seconds, encrypts crash-report logs to protect personal data, and fixes crashes in the Announcer window, entries.ini lookup, multi-file output, and large RunSignUp downloads.",
            "date_modified": "2023-06-29T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.34",
            "content_html": "<p>RunScore 8.3.6.34 fixes four bugs affecting RunSignUp downloads, invalid chip reads, application shutdown, listing file destinations, and USAT/USATF registration downloads.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.6.34#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>RunSignUp Race Loss:</strong> Fixed bug where the application lost the current race after RunSignUp download due to ESEO registration system file override (introduced in 8.3.6.31).</li>\n<li class=\"\"><strong>Invalid Chip Read Crash:</strong> Added null pointer check when processing invalid chip data.</li>\n<li class=\"\"><strong>Application Hang on Closure:</strong> Fixed listening thread not terminating while an active External Timer connection is open.</li>\n<li class=\"\"><strong>Listing File Destination Override:</strong> Preserves user-defined destination when exporting listing files to the editor.</li>\n<li class=\"\"><strong>USAT Day 1 Registrations:</strong> Fixed partial string comparison for \"USAT Membership\" designation from RunSignUp.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.34",
            "title": "8.3.6.34",
            "summary": "RunScore 8.3.6.34 fixes four bugs affecting RunSignUp downloads, invalid chip reads, application shutdown, listing file destinations, and USAT/USATF registration downloads.",
            "date_modified": "2023-05-26T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.32",
            "content_html": "<p>RunScore 8.3.6.32 fixes three AutoRun-related crashes and adds more in-depth logging for easier diagnosis on race day.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.6.32#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>AutoRun and Listing Files:</strong> Fixed crash when AutoRun was running and other listing files were executed manually.</li>\n<li class=\"\"><strong>AutoRun and CSV Import:</strong> Fixed crash when AutoRun was running and import participants from CSV was called.</li>\n<li class=\"\"><strong>Concurrent Chip Reads:</strong> Fixed crash when multiple chip reads arrived at the same time.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.6.32#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>In-Depth Logging:</strong> Added additional logging for troubleshooting.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.32",
            "title": "8.3.6.32",
            "summary": "RunScore 8.3.6.32 fixes three AutoRun-related crashes and adds more in-depth logging for easier diagnosis on race day.",
            "date_modified": "2023-05-04T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.31",
            "content_html": "<p>RunScore 8.3.6.31 fixes an AutoRun crash with lap races, adds unstructured results posting to Race Roster, integrates the ESEO registration system, and removes Sub-Event ID from text outputs.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.6.31#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>AutoRun Lap Races:</strong> Fixed crash when AutoRun was used with lap races.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"features\">Features<a href=\"https://docs.runscore.com/changelog/8.3.6.31#features\" class=\"hash-link\" aria-label=\"Direct link to Features\" title=\"Direct link to Features\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Race Roster Unstructured Results:</strong> Implemented sending unstructured results to Race Roster from RunScore.</li>\n<li class=\"\"><strong>ESEO Registration System:</strong> Added support for the ESEO registration system.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.6.31#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Sub-Event ID Removed:</strong> Removed Race Roster Sub-Event ID from all text outputs.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.31",
            "title": "8.3.6.31",
            "summary": "RunScore 8.3.6.31 fixes an AutoRun crash with lap races, adds unstructured results posting to Race Roster, integrates the ESEO registration system, and removes Sub-Event ID from text outputs.",
            "date_modified": "2023-04-10T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.30",
            "content_html": "<p>RunScore 8.3.6.30 improves API data encoding for special characters, adds unstructured results posting to Race Roster, and removes Sub-Event ID from printouts.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.6.30#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>API Encoding:</strong> Added encoding for special characters when sending data to API endpoints.</li>\n<li class=\"\"><strong>Race Roster Unstructured Results:</strong> Added ability to send unstructured results to Race Roster as a text printout.</li>\n<li class=\"\"><strong>Sub-Event ID Removed:</strong> Removed Sub-Event ID from all printouts.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.30",
            "title": "8.3.6.30",
            "summary": "RunScore 8.3.6.30 improves API data encoding for special characters, adds unstructured results posting to Race Roster, and removes Sub-Event ID from printouts.",
            "date_modified": "2023-01-25T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.29",
            "content_html": "<p>RunScore 8.3.6.29 fixes two bugs affecting listing file JSON creation and the Announcer screen when opened from a listing file.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.6.29#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Listing File JSON:</strong> Fixed bug with listing file JSON creation.</li>\n<li class=\"\"><strong>Announcer from Listing:</strong> Fixed issue with the Announcer screen when opened from a listing file.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.29",
            "title": "8.3.6.29",
            "summary": "RunScore 8.3.6.29 fixes two bugs affecting listing file JSON creation and the Announcer screen when opened from a listing file.",
            "date_modified": "2023-01-24T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.28",
            "content_html": "<p>RunScore 8.3.6.28 fixes an issue with a new thread that prevented some users from posting results to Race Roster.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bug-fixes\">Bug Fixes<a href=\"https://docs.runscore.com/changelog/8.3.6.28#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Bug Fixes\" title=\"Direct link to Bug Fixes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Race Roster Posting:</strong> Fixed issue with a new thread that caused some users to be unable to post to Race Roster.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.28",
            "title": "8.3.6.28",
            "summary": "RunScore 8.3.6.28 fixes an issue with a new thread that prevented some users from posting results to Race Roster.",
            "date_modified": "2023-01-17T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        },
        {
            "id": "https://docs.runscore.com/changelog/8.3.6.27",
            "content_html": "<p>RunScore 8.3.6.27 improves internal data management and moves listing file processing to its own thread, keeping the GUI more responsive during race operations.</p>\n<!-- -->\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"improvements\">Improvements<a href=\"https://docs.runscore.com/changelog/8.3.6.27#improvements\" class=\"hash-link\" aria-label=\"Direct link to Improvements\" title=\"Direct link to Improvements\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Internal Data Management:</strong> Added improvements to internal data management.</li>\n<li class=\"\"><strong>Listing File Threading:</strong> Moved listing file processing to its own thread, relieving processing load from the GUI thread and increasing responsiveness.</li>\n</ul>",
            "url": "https://docs.runscore.com/changelog/8.3.6.27",
            "title": "8.3.6.27",
            "summary": "RunScore 8.3.6.27 improves internal data management and moves listing file processing to its own thread, keeping the GUI more responsive during race operations.",
            "date_modified": "2023-01-16T12:00:00.000Z",
            "author": {
                "name": "RunScore Team"
            },
            "tags": [
                "release"
            ]
        }
    ]
}