[{"data":1,"prerenderedAt":1372},["ShallowReactive",2],{"releases:all":3},[4,43,68,97,123,151,180,209,238,268,298,325,355,383,411,435,465,495,523,546,570,592,616,640,666,690,714,743,767,790,812,834,859,882,911,934,958,982,1006,1031,1053,1075,1097,1122,1144,1166,1189,1211,1233,1255,1277,1297,1319,1341],{"tag":5,"name":5,"url":6,"publishedAt":7,"prerelease":8,"latest":9,"highlights":10,"notesHtml":13,"assets":14},"v2.16.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.16.2","2026-10-23T13:46:43Z",false,true,[11,12],"\u003Cstrong>webpki-roots 1.0.10.\u003C\u002Fstrong> Removes \u003Ccode>emSign ECC Root CA - G3\u003C\u002Fcode>, the root that signed the compromised intermediates. UltraLog uses these roots for update checks and the OpenECU Alliance spec download.","\u003Cstrong>rustls-webpki 0.103.16.\u003C\u002Fstrong> The matching certificate verifier update.","\u003Ch3>Security: stop trusting the compromised eMudhra root\u003C\u002Fh3>\n\u003Cp>Eight eMudhra intermediate CA keys were found to be recoverable from their public certificates\n(CVE-2026-111943). Anyone with those keys could issue a certificate for any website. Browsers and\noperating systems removed trust in the affected root on 18–20 October 2026.\u003C\u002Fp>\n\u003Cp>UltraLog does not use your operating system&#39;s certificate store. It carries its own list of\ntrusted roots, so an OS update does not protect it. This release updates that list.\u003C\u002Fp>\n\u003Ch4>What changed\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>webpki-roots 1.0.10.\u003C\u002Fstrong> Removes \u003Ccode>emSign ECC Root CA - G3\u003C\u002Fcode>, the root that signed the\ncompromised intermediates. UltraLog uses these roots for update checks and the OpenECU Alliance\nspec download.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>rustls-webpki 0.103.16.\u003C\u002Fstrong> The matching certificate verifier update.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>No log formats, GUI features or MCP server behavior changed. Update when the app offers it.\u003C\u002Fp>\n",[15,23,31,36],{"name":16,"url":17,"size":18,"sha256":19,"platform":20,"arch":21,"kind":22},"ultralog-linux.tar.gz","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.2\u002Fultralog-linux.tar.gz",11793786,"4dbbcbd65b52d4eed65724e9016987e42c1dbf9b6e06cc35bb7d51582c161760","linux","x86-64",".tar.gz",{"name":24,"url":25,"size":26,"sha256":27,"platform":28,"arch":29,"kind":30},"ultralog-macos-arm64.dmg","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.2\u002Fultralog-macos-arm64.dmg",13484901,"09dc824b57b5f701a07de4273a040976f6d519c37e6bc4ddf13aadc8fb9a0544","macos","arm64",".dmg",{"name":32,"url":33,"size":34,"sha256":35,"platform":28,"arch":21,"kind":30},"ultralog-macos-intel.dmg","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.2\u002Fultralog-macos-intel.dmg",14488648,"11316761af00a78f64d7c5b2cfee27c0aa2c06eaf6af966c61b0e726348dae91",{"name":37,"url":38,"size":39,"sha256":40,"platform":41,"arch":21,"kind":42},"ultralog-windows.zip","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.2\u002Fultralog-windows.zip",11715700,"e0ccd4954f6c01195ab567338bd439e178a132a63d48e529426235b08d95d3d2","windows",".zip",{"tag":44,"name":44,"url":45,"publishedAt":46,"prerelease":8,"latest":8,"highlights":47,"notesHtml":50,"assets":51},"v2.16.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.16.1","2026-10-22T23:35:40Z",[48,49],"\u003Cstrong>No fixed channel limit for \u003Ccode>.mlg\u003C\u002Fcode> logs.\u003C\u002Fstrong> The parser now checks the channel count against the file itself: the channel definitions must fit before the start of the data. A damaged or crafted file is still rejected, but a real log with any number of channels loads. The reporter&#39;s 1,096-channel log loads all 1,096 channels and 8,053 records.","\u003Cstrong>rustls 0.23.45.\u003C\u002Fstrong> UltraLog uses rustls for update checks and the OpenECU Alliance spec download. 0.23.45 fixes a medium-severity TLS 1.3 handshake bug.","\u003Ch3>Fixed: rusEFI logs from current firmware open again\u003C\u002Fh3>\n\u003Cp>Logs from current rusEFI firmware failed to open with &quot;Unreasonable field count: 1096&quot;. This\ncloses #100. Thanks to @rusefillc for the report and the example log, and to @FDSoftware for the\nfix in #101.\u003C\u002Fp>\n\u003Cp>The cause was a hard limit of 1,000 channels in the MLG parser. Current rusEFI firmware logs\n1,096 channels, so every log it writes was rejected. Older rusEFI logs with fewer channels were\nnot affected.\u003C\u002Fp>\n\u003Ch4>What changed\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>No fixed channel limit for \u003Ccode>.mlg\u003C\u002Fcode> logs.\u003C\u002Fstrong> The parser now checks the channel count against the\nfile itself: the channel definitions must fit before the start of the data. A damaged or\ncrafted file is still rejected, but a real log with any number of channels loads. The\nreporter&#39;s 1,096-channel log loads all 1,096 channels and 8,053 records.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>rustls 0.23.45.\u003C\u002Fstrong> UltraLog uses rustls for update checks and the OpenECU Alliance spec\ndownload. 0.23.45 fixes a medium-severity TLS 1.3 handshake bug.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Other formats, the GUI and the MCP server are unchanged.\u003C\u002Fp>\n\u003Cp>Format details are on the\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fwiki\u002FSupported-ECU-Formats#speeduino--rusefi\" rel=\"noopener\">Supported ECU Formats wiki\u003C\u002Fa>.\nIf a rusEFI or Speeduino log still fails to open, open an issue and attach the \u003Ccode>.mlg\u003C\u002Fcode>.\u003C\u002Fp>\n",[52,56,60,64],{"name":16,"url":53,"size":54,"sha256":55,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.1\u002Fultralog-linux.tar.gz",11793196,"b6c4e86f4710bb0ea6454f4ebc0a3ef7b29b1a929678cddf78c1757bd8d0e477",{"name":24,"url":57,"size":58,"sha256":59,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.1\u002Fultralog-macos-arm64.dmg",13484859,"9485f55dcbd4eb34458a554e593c6acb118ac4fefbcf32d6fe14c226b2269e12",{"name":32,"url":61,"size":62,"sha256":63,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.1\u002Fultralog-macos-intel.dmg",14488304,"2ef87b563880302bebe20840d9449f9cc9ec31b82150bb27240434c7cfcaf7ae",{"name":37,"url":65,"size":66,"sha256":67,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.1\u002Fultralog-windows.zip",11718356,"5897b642b31eb4ebe5ec551626ebabeb9187bb546b1f01f864c5dac1e2a2e61c",{"tag":69,"name":69,"url":70,"publishedAt":71,"prerelease":8,"latest":8,"highlights":72,"notesHtml":79,"assets":80},"v2.16.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.16.0","2026-10-22T15:12:29Z",[73,74,75,76,77,78],"\u003Cstrong>One timeline for the phone and the car.\u003C\u002Fstrong> Phone GPS (latitude, longitude, speed, altitude, bearing), the phone accelerometer, and every OBD-II and custom PID Torque logged, on the millisecond \u003Ccode>Device Time\u003C\u002Fcode> clock.","\u003Cstrong>Only the PIDs your car answered.\u003C\u002Fstrong> With &quot;log all PIDs&quot; Torque writes 200+ columns, most of them empty. Columns with no reading anywhere are hidden. A \u003Ccode>-\u003C\u002Fcode> between readings keeps the last value.","\u003Cstrong>Track Map works out of the box.\u003C\u002Fstrong> Lap detection, channel-colored track line and cursor sync work with the phone GPS.","\u003Cstrong>Restarts in one file are joined.\u003C\u002Fstrong> When logging restarts, Torque writes the header again, and the PID list can change. UltraLog loads all sections as one log.","\u003Cstrong>Files re-saved in Excel still load.\u003C\u002Fstrong> Excel shortens \u003Ccode>Device Time\u003C\u002Fcode> to \u003Ccode>mm:ss.0\u003C\u002Fcode>; UltraLog reads that clock and handles the hourly rollover. A phone clock that steps back (time-zone change, daylight saving time) does not drop rows.","\u003Cstrong>A clear message for empty logs.\u003C\u002Fstrong> If a file has only the header row, Torque recorded no samples in that session, and UltraLog says so.","\u003Ch3>New: Torque Pro logs\u003C\u002Fh3>\n\u003Cp>UltraLog now opens the \u003Ccode>trackLog\u003C\u002Fcode> CSV files from the Torque Pro OBD-II app for Android. Before\nthis release a Torque log did not load at all. This closes #97. Thanks to @ESKLAR09 for the\nrequest and the sample file.\u003C\u002Fp>\n\u003Ch4>What you get\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>One timeline for the phone and the car.\u003C\u002Fstrong> Phone GPS (latitude, longitude, speed, altitude,\nbearing), the phone accelerometer, and every OBD-II and custom PID Torque logged, on the\nmillisecond \u003Ccode>Device Time\u003C\u002Fcode> clock.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Only the PIDs your car answered.\u003C\u002Fstrong> With &quot;log all PIDs&quot; Torque writes 200+ columns, most of\nthem empty. Columns with no reading anywhere are hidden. A \u003Ccode>-\u003C\u002Fcode> between readings keeps the last\nvalue.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Track Map works out of the box.\u003C\u002Fstrong> Lap detection, channel-colored track line and cursor sync\nwork with the phone GPS.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Restarts in one file are joined.\u003C\u002Fstrong> When logging restarts, Torque writes the header again,\nand the PID list can change. UltraLog loads all sections as one log.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Files re-saved in Excel still load.\u003C\u002Fstrong> Excel shortens \u003Ccode>Device Time\u003C\u002Fcode> to \u003Ccode>mm:ss.0\u003C\u002Fcode>; UltraLog reads\nthat clock and handles the hourly rollover. A phone clock that steps back (time-zone change,\ndaylight saving time) does not drop rows.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>A clear message for empty logs.\u003C\u002Fstrong> If a file has only the header row, Torque recorded no\nsamples in that session, and UltraLog says so.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Other formats, the GUI and the MCP server are unchanged.\u003C\u002Fp>\n\u003Cp>Format details and logging steps are on the\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fwiki\u002FSupported-ECU-Formats#torque-pro---full-support\" rel=\"noopener\">Supported ECU Formats wiki\u003C\u002Fa>.\nIf a Torque log loads wrong, open an issue and attach the \u003Ccode>.csv\u003C\u002Fcode>.\u003C\u002Fp>\n",[81,85,89,93],{"name":16,"url":82,"size":83,"sha256":84,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.0\u002Fultralog-linux.tar.gz",11789742,"ec2f680ae3579f4235a8c2287e42330a8558a57b66b33714af7c0ac67dd1d5b7",{"name":24,"url":86,"size":87,"sha256":88,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.0\u002Fultralog-macos-arm64.dmg",13483202,"8a1ffbc141fb2dc24e70a4d1bbd447e847ee7b5e1eb09d17eb9d489d24c72a5a",{"name":32,"url":90,"size":91,"sha256":92,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.0\u002Fultralog-macos-intel.dmg",14486620,"ff0574a5a8bbc55197a0f2111111dc42d8bcecffac2e54bf7c01b6992bb2c8de",{"name":37,"url":94,"size":95,"sha256":96,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.16.0\u002Fultralog-windows.zip",11714828,"682b1d2bca92b5dc76fcf17943e3d424eba95e1085d1927ef519bf584b3e6c75",{"tag":98,"name":98,"url":99,"publishedAt":100,"prerelease":8,"latest":8,"highlights":101,"notesHtml":105,"assets":106},"v2.15.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.15.2","2026-10-20T20:16:49Z",[102,103,104],"\u003Cstrong>ME Tuner logs are detected by the \u003Ccode>Time, Marker\u003C\u002Fcode> header.\u003C\u002Fstrong> ME Tuner writes those two columns first in every export, whatever channels you log. ME221 and ME442 logs with any channel list now load through the Motorsport Electronics parser, with the time axis in seconds.","\u003Cstrong>Raw and status channels have no unit.\u003C\u002Fstrong> \u003Ccode>MAP Raw\u003C\u002Fcode>, \u003Ccode>Coolant temperature Raw\u003C\u002Fcode> and similar channels are raw sensor counts. They were labelled kPa or °C, so with imperial units selected a \u003Ccode>MAP Raw\u003C\u002Fcode> reading of 5908 showed as 857 psi. Status channels (\u003Ccode>Sync status\u003C\u002Fcode>, \u003Ccode>ALS Status\u003C\u002Fcode>) are also shown without a unit now.","\u003Cstrong>\u003Ccode>Coolant Temp.\u003C\u002Fcode> is shown in °C\u003C\u002Fstrong>, the same as \u003Ccode>Coolant temperature\u003C\u002Fcode>.","\u003Ch3>Fixed: Motorsport Electronics logs with a custom channel list load at the right length\u003C\u002Fh3>\n\u003Cp>An ME442 log with a short channel list (RPM, MAP, coolant, AFR) opened with its time axis 1,000x\ntoo short. A 31-minute log showed as 1.9 seconds. This closes #95. Thanks to @Iosy-Aloustas for\nthe report and the example log.\u003C\u002Fp>\n\u003Cp>The cause was detection. UltraLog identified ME Tuner exports by ME221 channel names such as\n\u003Ccode>Sync status\u003C\u002Fcode> and \u003Ccode>MAP Raw\u003C\u002Fcode>. ME Tuner logs only the channels you pick, so a short log had none of\nthose names. The file then loaded through the generic CSV parser, which reads a bare \u003Ccode>Time\u003C\u002Fcode> column\nas milliseconds. ME Tuner writes \u003Ccode>Time\u003C\u002Fcode> in seconds.\u003C\u002Fp>\n\u003Ch4>What changed\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>ME Tuner logs are detected by the \u003Ccode>Time, Marker\u003C\u002Fcode> header.\u003C\u002Fstrong> ME Tuner writes those two columns\nfirst in every export, whatever channels you log. ME221 and ME442 logs with any channel list now\nload through the Motorsport Electronics parser, with the time axis in seconds.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Raw and status channels have no unit.\u003C\u002Fstrong> \u003Ccode>MAP Raw\u003C\u002Fcode>, \u003Ccode>Coolant temperature Raw\u003C\u002Fcode> and similar\nchannels are raw sensor counts. They were labelled kPa or °C, so with imperial units selected a\n\u003Ccode>MAP Raw\u003C\u002Fcode> reading of 5908 showed as 857 psi. Status channels (\u003Ccode>Sync status\u003C\u002Fcode>, \u003Ccode>ALS Status\u003C\u002Fcode>) are\nalso shown without a unit now.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>Coolant Temp.\u003C\u002Fcode> is shown in °C\u003C\u002Fstrong>, the same as \u003Ccode>Coolant temperature\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Other formats, the GUI and the MCP server are unchanged. If you don&#39;t use a Motorsport Electronics\nECU, nothing in this release affects you.\u003C\u002Fp>\n\u003Cp>Format details are on the\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fwiki\u002FSupported-ECU-Formats#motorsport-electronics---full-support\" rel=\"noopener\">Supported ECU Formats wiki\u003C\u002Fa>.\nIf an ME Tuner channel shows the wrong unit, open an issue and attach the \u003Ccode>.csv\u003C\u002Fcode>.\u003C\u002Fp>\n",[107,111,115,119],{"name":16,"url":108,"size":109,"sha256":110,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.2\u002Fultralog-linux.tar.gz",11772906,"d1dd6ad97c4d5cf500b8488afcad16cf8a7e9816c33c23605d016ff0a5e58cf3",{"name":24,"url":112,"size":113,"sha256":114,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.2\u002Fultralog-macos-arm64.dmg",13481237,"d0cd3f335e6b53db72384c98e2d88f90f23f120a2706f6703d50d081e522e28d",{"name":32,"url":116,"size":117,"sha256":118,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.2\u002Fultralog-macos-intel.dmg",14454979,"276b930e6ad417c7712a923b27fcd26ab700543cf0e480cf29388eb38f91509e",{"name":37,"url":120,"size":121,"sha256":122,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.2\u002Fultralog-windows.zip",11696437,"f1df9dd77e536212c6d484bec750e8ee61208b5ca912c8dd696164a03899ea4e",{"tag":124,"name":124,"url":125,"publishedAt":126,"prerelease":8,"latest":8,"highlights":127,"notesHtml":133,"assets":134},"v2.15.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.15.1","2026-09-27T23:37:28Z",[128,129,130,131,132],"\u003Cstrong>MAP follows your logger&#39;s pressure setting.\u003C\u002Fstrong> EM Soft stores MAP in the pressure unit the logger is set to, and records that setting in the \u003Ccode>.lg2\u003C\u002Fcode>. UltraLog now reads it, so kPa and bar logs both show the correct kPa value. Other pressure settings are not supported yet.","\u003Cstrong>AFR\u002FLambda is shown in volts.\u003C\u002Fstrong> It is the K6&#39;s own 0–1 V lambda input. If a wideband controller feeds that input, convert it to AFR with a computed channel that uses your controller&#39;s output curve. The Lambda Delay and Accel Enrichment tools no longer offer this channel as wideband lambda.","\u003Cstrong>Ignition Advance uses an offset worked out from log data\u003C\u002Fstrong> (about 5° at idle, 14–17° on full boost). Compare it with EM Soft for your own log before you tune from it.","\u003Cstrong>Each value comes from its own slot.\u003C\u002Fstrong> A missing or unreadable \u003Ccode>[chanN]\u003C\u002Fcode> entry in the \u003Ccode>.lg2\u003C\u002Fcode> no longer shifts later channels onto the wrong data.","\u003Cstrong>Repeated names get the channel ID added\u003C\u002Fstrong>, for example \u003Ccode>Ignition Advance (ID 21)\u003C\u002Fcode>. Before this release, the second channel with the same name could not be selected by name.","\u003Ch3>Fixed: Emerald logs show the right channels\u003C\u002Fh3>\n\u003Cp>Emerald K6\u002FM3D logs could open with channels under the wrong names and with the wrong values.\nThrottle position showed up as \u003Ccode>Channel 2 (ID 41)\u003C\u002Fcode>. The lambda input was labelled TPS, and\nignition advance, injector duration, boost PWM and load site were all mislabelled. MAP could also\nread 10x low. This closes #93.\u003C\u002Fp>\n\u003Cp>The cause was the channel table. An Emerald \u003Ccode>.lg2\u003C\u002Fcode> file does not store channel names. It stores\none ID number per logger slot, and Emerald does not publish what those IDs mean. UltraLog&#39;s table\nwas reverse-engineered, and most of it was wrong. The IDs below are now confirmed against EM Soft\nfrom a real log:\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>EM Soft label\u003C\u002Fth>\n\u003Cth>UltraLog channel\u003C\u002Fth>\n\u003Cth>Unit\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Engine Speed\u003C\u002Ftd>\n\u003Ctd>RPM\u003C\u002Ftd>\n\u003Ctd>rpm\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Throttle Pos\u003C\u002Ftd>\n\u003Ctd>TPS\u003C\u002Ftd>\n\u003Ctd>%\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>AFR\u002FLambda\u003C\u002Ftd>\n\u003Ctd>Lambda Sensor Voltage\u003C\u002Ftd>\n\u003Ctd>V\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>MAP\u003C\u002Ftd>\n\u003Ctd>MAP\u003C\u002Ftd>\n\u003Ctd>kPa\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Ign Adv\u003C\u002Ftd>\n\u003Ctd>Ignition Advance\u003C\u002Ftd>\n\u003Ctd>°\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Inj Duration\u003C\u002Ftd>\n\u003Ctd>Inj Duration\u003C\u002Ftd>\n\u003Ctd>%\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>BoostPWM\u003C\u002Ftd>\n\u003Ctd>Boost PWM\u003C\u002Ftd>\n\u003Ctd>%\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Load site\u003C\u002Ftd>\n\u003Ctd>Load Site\u003C\u002Ftd>\n\u003Ctd>0–15\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch4>What changed\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>MAP follows your logger&#39;s pressure setting.\u003C\u002Fstrong> EM Soft stores MAP in the pressure unit the\nlogger is set to, and records that setting in the \u003Ccode>.lg2\u003C\u002Fcode>. UltraLog now reads it, so kPa and bar\nlogs both show the correct kPa value. Other pressure settings are not supported yet.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AFR\u002FLambda is shown in volts.\u003C\u002Fstrong> It is the K6&#39;s own 0–1 V lambda input. If a wideband controller\nfeeds that input, convert it to AFR with a computed channel that uses your controller&#39;s output\ncurve. The Lambda Delay and Accel Enrichment tools no longer offer this channel as wideband lambda.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ignition Advance uses an offset worked out from log data\u003C\u002Fstrong> (about 5° at idle, 14–17° on full\nboost). Compare it with EM Soft for your own log before you tune from it.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Each value comes from its own slot.\u003C\u002Fstrong> A missing or unreadable \u003Ccode>[chanN]\u003C\u002Fcode> entry in the \u003Ccode>.lg2\u003C\u002Fcode> no\nlonger shifts later channels onto the wrong data.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Repeated names get the channel ID added\u003C\u002Fstrong>, for example \u003Ccode>Ignition Advance (ID 21)\u003C\u002Fcode>. Before this\nrelease, the second channel with the same name could not be selected by name.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Other formats, the GUI and the MCP server are unchanged. If you don&#39;t use an Emerald ECU, nothing\nin this release affects you.\u003C\u002Fp>\n\u003Cp>Emerald channel details are on the\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fwiki\u002FSupported-ECU-Formats#emerald-ecu\" rel=\"noopener\">Supported ECU Formats wiki\u003C\u002Fa>.\nIf a channel still shows the wrong name or value, open an issue and attach the \u003Ccode>.lg1\u003C\u002Fcode>\u002F\u003Ccode>.lg2\u003C\u002Fcode> pair\nand an EM Soft screenshot of the same point.\u003C\u002Fp>\n",[135,139,143,147],{"name":16,"url":136,"size":137,"sha256":138,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.1\u002Fultralog-linux.tar.gz",11775178,"c707cc0b61f37e0a4537b434ce306521ab7780c8368a00d75362e1167320a111",{"name":24,"url":140,"size":141,"sha256":142,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.1\u002Fultralog-macos-arm64.dmg",13480446,"0cee71850c9933d01af6b2b0a4e00135f728dce2f8098ccfd681817d6a5de2ef",{"name":32,"url":144,"size":145,"sha256":146,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.1\u002Fultralog-macos-intel.dmg",14452541,"34f83e27a15e8932cd762842fcbb64266165a097972f850e739c8204969806a7",{"name":37,"url":148,"size":149,"sha256":150,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.1\u002Fultralog-windows.zip",11674997,"034a570e38a3f0eaa10597a9dedcb3b78dcc69ded13ce1ad8c511ddd30bba25c",{"tag":152,"name":152,"url":153,"publishedAt":154,"prerelease":8,"latest":8,"highlights":155,"notesHtml":162,"assets":163},"v2.15.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.15.0","2026-09-18T21:03:19Z",[156,157,158,159,160,161],"\u003Cstrong>Dead time\u003C\u002Fstrong> is the primary value; \u003Cstrong>T63\u003C\u002Fstrong> (time to 63 % of the settled response) is a second view.","Events are gated on a steady operating point, event spacing, fuel cut, clutch, coolant temperature and closed-loop correction movement. Every rejection is counted and shown, so the tool tells you what to log next (&quot;208 events found · 206 rejected: 109 unsteady, 93 overlap, 4 wrong direction&quot;).","\u003Cstrong>Strict\u003C\u002Fstrong> profile for trim-bump logs, \u003Cstrong>relaxed\u003C\u002Fstrong> for driving logs. An injector dead-time parameter handles PW channels that include it (Haltech on-time does).","CAN widebands often update at 10–20 Hz inside a 50–500 Hz log. The tool measures the sensor&#39;s real update rate and interpolates between updates, and warns when that limits resolution.","Exports in \u003Cstrong>milliseconds\u003C\u002Fstrong>, \u003Cstrong>engine cycles\u003C\u002Fstrong> or \u003Cstrong>ignition events\u003C\u002Fstrong> to match your ECU.","Signed corrections: negative means the ECU is already over-enriching.","\u003Ch3>New: Lambda Delay and Accel Enrichment table generators\u003C\u002Fh3>\n\u003Cp>Two new tools mine your logs for events and turn them into tuning tables. They sit beside Log\nViewer, Scatter Plots and Histogram in the tool switcher (\u003Ccode>⌘4\u003C\u002Fcode> \u002F \u003Ccode>⌘5\u003C\u002Fcode>, \u003Ccode>Ctrl+4\u003C\u002Fcode> \u002F \u003Ccode>Ctrl+5\u003C\u002Fcode>), with\nsetup in the Tool Properties panel and the table in the center. This closes #4 and #3, which asked\nfor exactly this instead of hand-reading several logs.\u003C\u002Fp>\n\u003Ch4>Lambda Delay\u003C\u002Fh4>\n\u003Cp>Finds injector pulse-width steps, measures how long the wideband takes to respond, and bins the\nresult by RPM × load (MAP or TPS). That number is what your ECU&#39;s closed-loop O2 control wants in\nits delay table.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Dead time\u003C\u002Fstrong> is the primary value; \u003Cstrong>T63\u003C\u002Fstrong> (time to 63 % of the settled response) is a second view.\u003C\u002Fli>\n\u003Cli>Events are gated on a steady operating point, event spacing, fuel cut, clutch, coolant temperature\nand closed-loop correction movement. Every rejection is counted and shown, so the tool tells you\nwhat to log next (&quot;208 events found · 206 rejected: 109 unsteady, 93 overlap, 4 wrong direction&quot;).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Strict\u003C\u002Fstrong> profile for trim-bump logs, \u003Cstrong>relaxed\u003C\u002Fstrong> for driving logs. An injector dead-time parameter\nhandles PW channels that include it (Haltech on-time does).\u003C\u002Fli>\n\u003Cli>CAN widebands often update at 10–20 Hz inside a 50–500 Hz log. The tool measures the sensor&#39;s real\nupdate rate and interpolates between updates, and warns when that limits resolution.\u003C\u002Fli>\n\u003Cli>Exports in \u003Cstrong>milliseconds\u003C\u002Fstrong>, \u003Cstrong>engine cycles\u003C\u002Fstrong> or \u003Cstrong>ignition events\u003C\u002Fstrong> to match your ECU.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Accel Enrichment\u003C\u002Fh4>\n\u003Cp>Detects tip-ins from a native throttle-rate channel (\u003Ccode>TPS DOT\u003C\u002Fcode>, \u003Ccode>Throttle Position Derivative\u003C\u002Fcode>,\n\u003Ccode>TPS Delta\u003C\u002Fcode>) or a computed derivative, shifts the lambda window by the measured delay, and reports\nthe lean or rich excursion against target with a \u003Cstrong>suggested starting correction\u003C\u002Fstrong>, binned by RPM ×\nthrottle rate.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Signed corrections: negative means the ECU is already over-enriching.\u003C\u002Fli>\n\u003Cli>If you map the ECU&#39;s own AE-activity channel, the table is labelled \u003Cstrong>additional\u003C\u002Fstrong> and the\nsuggestion is a multiplier on your current AE value; otherwise it is absolute. One cell never mixes\nthe two.\u003C\u002Fli>\n\u003Cli>Uses a Lambda Delay table generated in the same session for the delay compensation when the\nmatching cell is trustworthy, else a configurable assumed delay.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Shared\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Channel roles are auto-detected from the log with a data-plausibility check; near-ties are flagged\n\u003Ccode>⚠\u003C\u002Fcode> for you to confirm. Haltech&#39;s &quot;no reading&quot; sentinel values are masked before any math.\u003C\u002Fli>\n\u003Cli>Each cell shows the median with a sample-count badge coloured by confidence (Low \u002F Medium \u002F High).\nEmpty and low cells are never interpolated and export blank by default.\u003C\u002Fli>\n\u003Cli>Hover a cell for its statistics; click it for the event inspector, and \u003Cstrong>Jump\u003C\u002Fstrong> to that moment in\nthe Log Viewer.\u003C\u002Fli>\n\u003Cli>Fold several logs into one table with \u003Cem>Add current file\u003C\u002Fem>; remove a log or reset at any time.\nTables survive tab and tool switches.\u003C\u002Fli>\n\u003Cli>Export as \u003Cstrong>CSV\u003C\u002Fstrong> (value, count and spread grids), \u003Cstrong>clipboard\u003C\u002Fstrong> (bare tab-separated grid for\npasting into tuning software), \u003Cstrong>PNG\u003C\u002Fstrong> or \u003Cstrong>PDF\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>New field normalizations: injector on-time names → \u003Ccode>Pulse Width\u003C\u002Fcode>; \u003Ccode>TPS DOT\u003C\u002Fcode> \u002F\n\u003Ccode>Throttle Position Derivative\u003C\u002Fcode> \u002F \u003Ccode>TPS Delta\u003C\u002Fcode> → \u003Ccode>TPS Rate\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>All strings in the 15 supported languages.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Full guide: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fwiki\u002FTuning-Table-Generators\" rel=\"noopener\">Tuning Table Generators\u003C\u002Fa> on the wiki.\u003C\u002Fp>\n\u003Cp>Thanks to @Barneyjm for building the generators (#90).\u003C\u002Fp>\n",[164,168,172,176],{"name":16,"url":165,"size":166,"sha256":167,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.0\u002Fultralog-linux.tar.gz",11773300,"67396829752b9e0807236cf3011120b133ca5a4e0610ada8f1ba6638d9ea0e34",{"name":24,"url":169,"size":170,"sha256":171,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.0\u002Fultralog-macos-arm64.dmg",13479417,"6322273085aad1a41072ecc18fd749729787755b6181745e0e1e13b2009620c5",{"name":32,"url":173,"size":174,"sha256":175,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.0\u002Fultralog-macos-intel.dmg",14448784,"bf34cee221a48fad30fede34138616fefc71730182d38be6a4e6364630afedeb",{"name":37,"url":177,"size":178,"sha256":179,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.15.0\u002Fultralog-windows.zip",11672591,"2daf6c54ebb67724f39335ed23390113b9fbd0bbaa1004a862396efe8f167c2e",{"tag":181,"name":181,"url":182,"publishedAt":183,"prerelease":8,"latest":8,"highlights":184,"notesHtml":191,"assets":192},"v2.14.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.14.1","2026-09-16T16:58:38Z",[185,186,187,188,189,190],"\u003Cstrong>Series are downsampled for transport.\u003C\u002Fstrong> \u003Ccode>evaluate_formula\u003C\u002Fcode> and \u003Ccode>get_channel_data\u003C\u002Fcode> return 2,000 samples by default and take a new \u003Ccode>max_points\u003C\u002Fcode> argument for up to 10,000. Downsampling uses the same LTTB algorithm as the chart, so peaks and dropouts survive rather than being skipped past. For full resolution, narrow the window with \u003Ccode>start_time\u003C\u002Fcode>\u002F\u003Ccode>end_time\u003C\u002Fcode>.","\u003Cstrong>Responses say what you got.\u003C\u002Fstrong> Every reply now carries \u003Ccode>total_samples\u003C\u002Fcode> and \u003Ccode>downsampled\u003C\u002Fcode>, so a reduced series is never mistaken for a complete one.","\u003Cstrong>Statistics are still exact.\u003C\u002Fstrong> Min, max, mean, median and standard deviation are computed over every record in range — not over the samples that came back.","\u003Cstrong>\u003Ccode>find_peaks\u003C\u002Fcode> reports its cap.\u003C\u002Fstrong> It returns at most 500 peaks, selected by prominence and listed chronologically, and now includes \u003Ccode>total_peaks\u003C\u002Fcode> and \u003Ccode>truncated\u003C\u002Fcode>. Previously a capped list was indistinguishable from a complete one, so counting events off it gave exactly 500 every time.","\u003Cstrong>Oversized replies error instead of hanging.\u003C\u002Fstrong> Anything still too large to deliver comes back as a clear message naming \u003Ccode>max_points\u003C\u002Fcode> and the time range.","A log with ragged rows — where some rows are missing a column — could crash UltraLog when that channel was requested over MCP. It&#39;s now reported as an error instead.","\u003Ch3>Fixed: MCP tool calls no longer hang on large logs\u003C\u002Fh3>\n\u003Cp>If you drive UltraLog from Claude Desktop, \u003Ccode>evaluate_formula\u003C\u002Fcode> and \u003Ccode>get_channel_data\u003C\u002Fcode> would hang\nforever on any log over roughly 22,000 rows — no result and no error, just silence until you gave\nup. Smaller logs worked fine, which made it look like a slowdown rather than a hard failure.\u003C\u002Fp>\n\u003Cp>The cause was response size. Both tools returned one entry per log record, and MCP clients discard\nany single response over 1 MiB inside their decoder without reporting anything. A 178,000-row\nsession produced several megabytes, so the reply was dropped in transit and nothing ever came back.\u003C\u002Fp>\n\u003Cp>Responses are now bounded. A 500,000-row log returns in well under a second.\u003C\u002Fp>\n\u003Ch4>What changed\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Series are downsampled for transport.\u003C\u002Fstrong> \u003Ccode>evaluate_formula\u003C\u002Fcode> and \u003Ccode>get_channel_data\u003C\u002Fcode> return 2,000\nsamples by default and take a new \u003Ccode>max_points\u003C\u002Fcode> argument for up to 10,000. Downsampling uses the\nsame LTTB algorithm as the chart, so peaks and dropouts survive rather than being skipped past.\nFor full resolution, narrow the window with \u003Ccode>start_time\u003C\u002Fcode>\u002F\u003Ccode>end_time\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Responses say what you got.\u003C\u002Fstrong> Every reply now carries \u003Ccode>total_samples\u003C\u002Fcode> and \u003Ccode>downsampled\u003C\u002Fcode>, so a\nreduced series is never mistaken for a complete one.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Statistics are still exact.\u003C\u002Fstrong> Min, max, mean, median and standard deviation are computed over\nevery record in range — not over the samples that came back.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>find_peaks\u003C\u002Fcode> reports its cap.\u003C\u002Fstrong> It returns at most 500 peaks, selected by prominence and listed\nchronologically, and now includes \u003Ccode>total_peaks\u003C\u002Fcode> and \u003Ccode>truncated\u003C\u002Fcode>. Previously a capped list was\nindistinguishable from a complete one, so counting events off it gave exactly 500 every time.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Oversized replies error instead of hanging.\u003C\u002Fstrong> Anything still too large to deliver comes back as\na clear message naming \u003Ccode>max_points\u003C\u002Fcode> and the time range.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Also fixed\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>A log with ragged rows — where some rows are missing a column — could crash UltraLog when that\nchannel was requested over MCP. It&#39;s now reported as an error instead.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Parsing, the GUI and ECU format support are unchanged. If you don&#39;t use the Claude Desktop\nintegration, the ragged-log crash fix is the only thing here that affects you.\u003C\u002Fp>\n",[193,197,201,205],{"name":16,"url":194,"size":195,"sha256":196,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.1\u002Fultralog-linux.tar.gz",11572778,"3c378f840a4ffa1caf92459320608ecdc7f0ff86e61dd2f8718e0f95937989e2",{"name":24,"url":198,"size":199,"sha256":200,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.1\u002Fultralog-macos-arm64.dmg",13298031,"b7118c45cdc813688ba8e07a32f92057b58fe891f24e6d1003c2fec229b628f6",{"name":32,"url":202,"size":203,"sha256":204,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.1\u002Fultralog-macos-intel.dmg",14249327,"50d763a30d91b33eee55963d22e7e7b1fd1f33b7a6546558735e0c2ea22d8285",{"name":37,"url":206,"size":207,"sha256":208,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.1\u002Fultralog-windows.zip",11463861,"8b440d10363128fcb2fc350c65a7dc5e28a854d6c066f5630f2bdad7fe48597f",{"tag":210,"name":210,"url":211,"publishedAt":212,"prerelease":8,"latest":8,"highlights":213,"notesHtml":220,"assets":221},"v2.14.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.14.0","2026-08-26T21:06:09Z",[214,215,216,217,218,219],"\u003Cstrong>Units come from the file.\u003C\u002Fstrong> That second row carries the unit for every column, including the time base. A log recorded in milliseconds scales correctly instead of being read as seconds — the failure mode that once made a 34-minute log render as two seconds.","\u003Cstrong>The Track Map just works.\u003C\u002Fstrong> GPS latitude and longitude arrive in decimal degrees under their exported names, so a logged session draws the circuit beside your chart with lap detection and channel coloring, same as any other GPS-bearing format.","\u003Cstrong>Gaps before GPS lock don&#39;t punch holes in your data.\u003C\u002Fstrong> RealDash leaves GPS fields blank until it gets a fix, and writes \u003Ccode>GPS Date\u003C\u002Fcode> as text. Those fields carry the previous value forward rather than dropping to zero mid-log. \u003Ccode>GPS Time\u003C\u002Fcode> is converted to seconds since midnight, so the clock plots as a real channel instead of reading zero.","\u003Cstrong>Multi-session files stay in order.\u003C\u002Fstrong> A \u003Ccode>.msl\u003C\u002Fcode> can concatenate sessions, which sends the time column backwards partway through. UltraLog shifts each restart forward so the timeline never doubles back — which is what keeps computed-channel time shifts (\u003Ccode>RPM[-1]\u003C\u002Fcode>, \u003Ccode>Boost@-0.5s\u003C\u002Fcode>) correct on these files.","\u003Cstrong>Faulted sensors stay readable.\u003C\u002Fstrong> A logger that writes \u003Ccode>NaN\u003C\u002Fcode> or \u003Ccode>inf\u003C\u002Fcode> for a dropped sensor no longer blanks out the chart&#39;s auto-scaling or the min\u002Fmax legend for that channel.","\u003Cstrong>Marks and preambles are handled.\u003C\u002Fstrong> TunerStudio \u003Ccode>MARK\u003C\u002Fcode> lines are skipped, and a firmware banner or capture-date preamble ahead of the header is fine.","\u003Ch3>Highlights\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>UltraLog now opens TunerStudio \u003Ccode>.msl\u003C\u002Fcode> datalogs.\u003C\u002Fstrong> That&#39;s the tab-delimited legacy ASCII format from TunerStudio&#39;s Data Logging menu — and, more to the point, what \u003Cstrong>RealDash\u003C\u002Fstrong> writes when it logs your ECU over Bluetooth. Drop the file straight into UltraLog: no export step, no conversion, no cable.\u003C\u002Fp>\n\u003Cp>This one came from \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fissues\u002F86\" rel=\"noopener\">issue #86\u003C\u002Fa>. A Speeduino user logs over Bluetooth with RealDash on a phone, which writes \u003Ccode>.msl\u003C\u002Fcode> by default — so every session meant either reconfiguring RealDash to emit CSV or converting files by hand before they could be opened. They shared two real sessions to build against, 3.6 MB and 10 MB, and both now load in full: 29 channels across 16,903 and 46,288 rows. Thank you for the files — real logs are what make format support solid.\u003C\u002Fp>\n\u003Chr>\n\u003Ch3>New: TunerStudio MSL imports\u003C\u002Fh3>\n\u003Cp>An \u003Ccode>.msl\u003C\u002Fcode> is a header row, a units row, then tab-delimited data:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">Time    SecL    RPM     MAP     ...     GPS Latitude    GPS Longitude   GPS Time\nsec     s       RPM     kPa     ...     lat             lon             time\n0.0     202.0   965.0   33.0    ...     -26.253315      -51.06884       21:51\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>\u003Cstrong>Units come from the file.\u003C\u002Fstrong> That second row carries the unit for every column, including the time base. A log recorded in milliseconds scales correctly instead of being read as seconds — the failure mode that once made a 34-minute log render as two seconds.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The Track Map just works.\u003C\u002Fstrong> GPS latitude and longitude arrive in decimal degrees under their exported names, so a logged session draws the circuit beside your chart with lap detection and channel coloring, same as any other GPS-bearing format.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Gaps before GPS lock don&#39;t punch holes in your data.\u003C\u002Fstrong> RealDash leaves GPS fields blank until it gets a fix, and writes \u003Ccode>GPS Date\u003C\u002Fcode> as text. Those fields carry the previous value forward rather than dropping to zero mid-log. \u003Ccode>GPS Time\u003C\u002Fcode> is converted to seconds since midnight, so the clock plots as a real channel instead of reading zero.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multi-session files stay in order.\u003C\u002Fstrong> A \u003Ccode>.msl\u003C\u002Fcode> can concatenate sessions, which sends the time column backwards partway through. UltraLog shifts each restart forward so the timeline never doubles back — which is what keeps computed-channel time shifts (\u003Ccode>RPM[-1]\u003C\u002Fcode>, \u003Ccode>Boost@-0.5s\u003C\u002Fcode>) correct on these files.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Faulted sensors stay readable.\u003C\u002Fstrong> A logger that writes \u003Ccode>NaN\u003C\u002Fcode> or \u003Ccode>inf\u003C\u002Fcode> for a dropped sensor no longer blanks out the chart&#39;s auto-scaling or the min\u002Fmax legend for that channel.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Marks and preambles are handled.\u003C\u002Fstrong> TunerStudio \u003Ccode>MARK\u003C\u002Fcode> lines are skipped, and a firmware banner or capture-date preamble ahead of the header is fine.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Not to be confused with the MegaSquirt CSV.\u003C\u002Fstrong> TunerStudio also exports a comma-delimited \u003Ccode>.csv\u003C\u002Fcode>, which UltraLog has read for a while via the MegaSquirt parser. Both are supported and UltraLog picks the right one automatically — you don&#39;t need to tell it which you have.\u003C\u002Fp>\n\u003Ch3>Under the hood\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>.msl\u003C\u002Fcode> joins the file-dialog filter, so the picker stops hiding your logs.\u003C\u002Fli>\n\u003Cli>Format detection keys on the header\u002Funits row pair rather than the \u003Ccode>Time\u003C\u002Fcode> column alone. Several formats lead with \u003Ccode>Time\u003C\u002Fcode>; only MSL puts a time unit directly beneath it. A regression test now walks every bundled example log and asserts the new detector claims none of them — adding a parser to the chain is exactly when a detector can start stealing another format&#39;s files.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Documentation\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>The \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fwiki\u002FSupported-ECU-Formats\" rel=\"noopener\">Supported ECU Formats wiki\u003C\u002Fa> gains a full TunerStudio MSL page covering the layout, GPS behavior, and how blank and non-numeric columns are handled. It also corrects a long-standing error: the format table listed \u003Ccode>.msl\u003C\u002Fcode> under MegaSquirt, which was never accurate — that parser only ever read the comma-delimited CSV.\u003C\u002Fli>\n\u003Cli>README and \u003Ca href=\"https:\u002F\u002Fultralog.co\u002F\" rel=\"noopener\">ultralog.co\u003C\u002Fa> list MSL in the format roster.\u003C\u002Fli>\n\u003C\u002Ful>\n",[222,226,230,234],{"name":16,"url":223,"size":224,"sha256":225,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.0\u002Fultralog-linux.tar.gz",11565242,"4a8b57229c654438bc55aadafae6edb40b567e2652cf8aed9e7212889c3c8658",{"name":24,"url":227,"size":228,"sha256":229,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.0\u002Fultralog-macos-arm64.dmg",13286747,"4ebd84ccc25223d3c74bd65e1b499f2c6c9eaf1740511b1549ee759c56544aba",{"name":32,"url":231,"size":232,"sha256":233,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.0\u002Fultralog-macos-intel.dmg",14236746,"a8690d4658426c1f3e4096a2323b45c1a452215004fa9a9a9a28d85fe200647c",{"name":37,"url":235,"size":236,"sha256":237,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.14.0\u002Fultralog-windows.zip",11454111,"a623ca5fdacef2d55f38583b598ce47c3e0e4b650ca209234cf24cff685f9d80",{"tag":239,"name":240,"url":241,"publishedAt":242,"prerelease":8,"latest":8,"highlights":243,"notesHtml":250,"assets":251},"v2.13.1","v2.13.1 — RaceChrono CSV v3 imports","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.13.1","2026-08-20T01:29:58Z",[244,245,246,247,248,249],"\u003Cstrong>Everything on one timeline.\u003C\u002Fstrong> RaceChrono merges GPS (position, speed, bearing, altitude, fix quality), phone sensors (accelerometer, gyroscope, magnetometer, lean angle), and any OBD-II\u002FCAN channels you logged (RPM, oil temperature, throttle, …) into one table — UltraLog reads it all.","\u003Cstrong>The Track Map just works.\u003C\u002Fstrong> Latitude\u002Flongitude arrive in decimal degrees under their standard names, so the v2.13.0 GPS Track Map appears automatically: the circuit drawn beside your chart, laps detected, any channel painted onto the racing line.","\u003Cstrong>Lap and fragment aware.\u003C\u002Fstrong> RaceChrono sessions that were paused and resumed at the track record multiple fragments, and the in-file elapsed time resets at each one. UltraLog builds its time axis from the GPS timestamps instead, so the whole day stays in order. Lap numbers come along as a channel.","\u003Cstrong>Duplicate channels stay distinguishable.\u003C\u002Fstrong> RaceChrono logs some channels once per source — you&#39;ll see \u003Ccode>speed (gps)\u003C\u002Fcode> next to \u003Ccode>speed (calc)\u003C\u002Fcode> so you can compare the GPS speed against RaceChrono&#39;s calculated one.","\u003Cstrong>Resilient parsing.\u003C\u002Fstrong> Sessions survive an Excel\u002FNumbers\u002FSheets round-trip (trailing-comma padding is handled), a malformed row is skipped rather than failing the file, and temperatures exported as \u003Ccode>.C\u003C\u002Fcode> display as °C.","\u003Cstrong>Clear guidance on the wrong export.\u003C\u002Fstrong> Only CSV v3 is supported — pick it in RaceChrono&#39;s export dialog. Loading a CSV v1\u002Fv2 export shows a clear &quot;re-export as CSV v3&quot; message instead of a confusing failure, and \u003Ccode>.vbo\u003C\u002Fcode>\u002F\u003Ccode>.rcz\u003C\u002Fcode> are not supported.","\u003Ch3>Highlights\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>UltraLog now opens RaceChrono track sessions.\u003C\u002Fstrong> Export a session from RaceChrono or RaceChrono Pro as \u003Cstrong>CSV v3\u003C\u002Fstrong> and drop it straight into UltraLog — your GPS trace, phone sensors, and OBD\u002FCAN channels land on one synchronized timeline, with lap numbers and the GPS Track Map working out of the box. Analyze your track days on a big screen instead of a phone.\u003C\u002Fp>\n\u003Cp>This one came straight from a user request: a RaceChrono user asked whether UltraLog could read their lap-timing exports and shared a full 2.5-hour, 125 MB session from a track day to test against. That real session — 515,000 rows, 34 channels, six recording fragments — now parses in under half a second. Thank you for the data; real files are what make format support solid.\u003C\u002Fp>\n\u003Chr>\n\u003Ch3>New: RaceChrono CSV v3 imports\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Everything on one timeline.\u003C\u002Fstrong> RaceChrono merges GPS (position, speed, bearing, altitude, fix quality), phone sensors (accelerometer, gyroscope, magnetometer, lean angle), and any OBD-II\u002FCAN channels you logged (RPM, oil temperature, throttle, …) into one table — UltraLog reads it all.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The Track Map just works.\u003C\u002Fstrong> Latitude\u002Flongitude arrive in decimal degrees under their standard names, so the v2.13.0 GPS Track Map appears automatically: the circuit drawn beside your chart, laps detected, any channel painted onto the racing line.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Lap and fragment aware.\u003C\u002Fstrong> RaceChrono sessions that were paused and resumed at the track record multiple fragments, and the in-file elapsed time resets at each one. UltraLog builds its time axis from the GPS timestamps instead, so the whole day stays in order. Lap numbers come along as a channel.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Duplicate channels stay distinguishable.\u003C\u002Fstrong> RaceChrono logs some channels once per source — you&#39;ll see \u003Ccode>speed (gps)\u003C\u002Fcode> next to \u003Ccode>speed (calc)\u003C\u002Fcode> so you can compare the GPS speed against RaceChrono&#39;s calculated one.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Resilient parsing.\u003C\u002Fstrong> Sessions survive an Excel\u002FNumbers\u002FSheets round-trip (trailing-comma padding is handled), a malformed row is skipped rather than failing the file, and temperatures exported as \u003Ccode>.C\u003C\u002Fcode> display as °C.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Clear guidance on the wrong export.\u003C\u002Fstrong> Only CSV v3 is supported — pick it in RaceChrono&#39;s export dialog. Loading a CSV v1\u002Fv2 export shows a clear &quot;re-export as CSV v3&quot; message instead of a confusing failure, and \u003Ccode>.vbo\u003C\u002Fcode>\u002F\u003Ccode>.rcz\u003C\u002Fcode> are not supported.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Improved: unit preferences now cover more source units\u003C\u002Fh3>\n\u003Cp>Channels logged in \u003Cstrong>°C, °F, m\u002Fs, or meters\u003C\u002Fstrong> now honor your display unit preferences — previously they were shown as logged regardless of your settings. This applies to RaceChrono&#39;s GPS speed (m\u002Fs) and altitude (m), and to the °C temperatures written by the AiM, ECUMaster, Emerald, MHD, RomRaider, and Woolich parsers. Meters follow the short-distance convention: the metric preference keeps meters, the miles preference shows feet — so GPS altitude never displays as 0.003 mi.\u003C\u002Fp>\n\u003Ch3>Documentation catch-up\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>The \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fwiki\u002FSupported-ECU-Formats\" rel=\"noopener\">Supported ECU Formats wiki\u003C\u002Fa> gained full pages for RaceChrono plus the five formats that shipped without one: MHD Tuning, BlueDriver, Motorsport Electronics, DynamicEFI, and Locomotive — and its auto-detection list now covers all 15 formats.\u003C\u002Fli>\n\u003Cli>README and \u003Ca href=\"https:\u002F\u002Fultralog.co\u002F\" rel=\"noopener\">ultralog.co\u003C\u002Fa> now list the complete format roster.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Under the hood\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Fixed a fixture path casing bug that had been silently skipping the RomRaider and OBDLink example-file tests on Linux CI — they run (and pass) again.\u003C\u002Fli>\n\u003Cli>A RaceChrono file missing its \u003Ccode>Format\u003C\u002Fcode> metadata line now reports exactly that, instead of an unsupported-version error.\u003C\u002Fli>\n\u003C\u002Ful>\n",[252,256,260,264],{"name":16,"url":253,"size":254,"sha256":255,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.1\u002Fultralog-linux.tar.gz",11564619,"74124dfc298bae5a369e62a75385ca6031beec22b85b0fb659de65cec885852a",{"name":24,"url":257,"size":258,"sha256":259,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.1\u002Fultralog-macos-arm64.dmg",13299232,"6710d695b3a8664d1bc067a4f5e73fa307400c6007625ad25657aaf9c1bb4aa2",{"name":32,"url":261,"size":262,"sha256":263,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.1\u002Fultralog-macos-intel.dmg",14243282,"2a05ecc9c968f0d927be3952a85334b7a8add8ad4fae33f8052b75d4efc2c1f2",{"name":37,"url":265,"size":266,"sha256":267,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.1\u002Fultralog-windows.zip",11451937,"57bc759f35fa615862eb5a2496312cb0d883547d1d50b154abfb08c6359a87fb",{"tag":269,"name":270,"url":271,"publishedAt":272,"prerelease":8,"latest":8,"highlights":273,"notesHtml":280,"assets":281},"v2.13.0","v2.13.0 — GPS Track Map, lap detection, and satellite imagery","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.13.0","2026-08-18T14:48:50Z",[274,275,276,277,278,279],"\u003Cstrong>Works with every supported log format.\u003C\u002Fstrong> Detection is data-driven, not format-driven — if your log has recognizable latitude\u002Flongitude channels (MLG logs from rusEFI\u002FMegaSquirt\u002FSpeeduino, AiM, Link, Haltech, generic OBD-II CSVs, and more), the map appears. No configuration needed.","\u003Cstrong>Automatic lap detection.\u003C\u002Fstrong> Closed loops are detected and listed in a lap selector; pick one to focus the map on a single lap with the rest of the session dimmed.","\u003Cstrong>Color the track by any channel.\u003C\u002Fstrong> Pick any selected channel and the racing line is painted with the Viridis or Turbo colormap — with an editable min\u002Fmax range and a legend. Watch coolant temperature climb corner by corner.","\u003Cstrong>Synchronized with your chart.\u003C\u002Fstrong> Hovering the track scrubs the chart cursor and timeline while playback is stopped; clicking seeks to that exact moment. The cursor dot follows along during playback.","\u003Cstrong>Optional satellite and street map backgrounds.\u003C\u002Fstrong> Turn on Esri World Imagery or OpenStreetMap tiles under your track, with opacity and grayscale controls so the map never fights your data. Tiles are \u003Cstrong>off by default and opt-in\u003C\u002Fstrong> — nothing is downloaded until you enable them, a one-time notice explains that tile requests share your track&#39;s approximate location with the provider, and downloads are cached on disk so repeat sessions are instant.","\u003Cstrong>Any GPS coordinate encoding.\u003C\u002Fstrong> Logs that store coordinates as NMEA degrees-decimal-minutes, scaled integers (milli\u002Fmicro\u002F1e-7 degrees), or 0–360 longitude are detected and normalized automatically — they just work.","\u003Cp>UltraLog GPS Track Map — a lap drawn over satellite imagery, colored by channel data\u003C\u002Fp>\n\u003Ch3>Highlights\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>UltraLog can now show you where your log happened.\u003C\u002Fstrong> Open any log that contains GPS data and a Track Map appears beside your chart: your session drawn as a racing line, laps detected automatically, and any channel painted onto the track so you can see exactly where the boost spiked or the AFR went lean.\u003C\u002Fp>\n\u003Cp>This entire feature — the track map, lap detection, the tile system, and the data-panel framework it lives in — was designed and built by \u003Cstrong>@irudoy\u003C\u002Fstrong>. It arrived as a complete, polished, tested contribution, and it is one of the best PRs this project has ever received. Thank you, Ivan. 🏁\u003C\u002Fp>\n\u003Chr>\n\u003Ch3>New: GPS Track Map\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Works with every supported log format.\u003C\u002Fstrong> Detection is data-driven, not format-driven — if your log has recognizable latitude\u002Flongitude channels (MLG logs from rusEFI\u002FMegaSquirt\u002FSpeeduino, AiM, Link, Haltech, generic OBD-II CSVs, and more), the map appears. No configuration needed.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic lap detection.\u003C\u002Fstrong> Closed loops are detected and listed in a lap selector; pick one to focus the map on a single lap with the rest of the session dimmed.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Color the track by any channel.\u003C\u002Fstrong> Pick any selected channel and the racing line is painted with the Viridis or Turbo colormap — with an editable min\u002Fmax range and a legend. Watch coolant temperature climb corner by corner.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Synchronized with your chart.\u003C\u002Fstrong> Hovering the track scrubs the chart cursor and timeline while playback is stopped; clicking seeks to that exact moment. The cursor dot follows along during playback.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Optional satellite and street map backgrounds.\u003C\u002Fstrong> Turn on Esri World Imagery or OpenStreetMap tiles under your track, with opacity and grayscale controls so the map never fights your data. Tiles are \u003Cstrong>off by default and opt-in\u003C\u002Fstrong> — nothing is downloaded until you enable them, a one-time notice explains that tile requests share your track&#39;s approximate location with the provider, and downloads are cached on disk so repeat sessions are instant.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Any GPS coordinate encoding.\u003C\u002Fstrong> Logs that store coordinates as NMEA degrees-decimal-minutes, scaled integers (milli\u002Fmicro\u002F1e-7 degrees), or 0–360 longitude are detected and normalized automatically — they just work.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>An extensible data panel.\u003C\u002Fstrong> The Track Map is the first widget in a new right-side panel built to host more (think g-force plots and gauges) — resizable, collapsible, per-file.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Also in this release\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>MLG hex bitfield support\u003C\u002Fstrong> — bitfield type IDs written in hexadecimal (\u003Ccode>0x10\u003C\u002Fcode>–\u003Ccode>0x12\u003C\u002Fcode>), as the MLG specification defines them, are now accepted alongside the legacy decimal interpretation. Fixes channel misalignment in MegaSquirt and rusEFI logs from newer tooling.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Accessibility\u003C\u002Fstrong> — the new data-panel controls carry proper accessible labels and are fully keyboard-operable.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Localization\u003C\u002Fstrong> — every new UI string ships in all 15 supported languages.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Thanks\u003C\u002Fh3>\n\u003Cp>💚 \u003Cstrong>@irudoy\u003C\u002Fstrong> built the GPS Track Map, lap detection, tile system, and data-panel framework — the headline of this release, end to end. If you enjoy this feature, go give Ivan&#39;s work some love on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F83\" rel=\"noopener\">#83\u003C\u002Fa>.\u003C\u002Fp>\n",[282,286,290,294],{"name":16,"url":283,"size":284,"sha256":285,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.0\u002Fultralog-linux.tar.gz",11550018,"9fe6556f84b05dc93b728ae7d74353c869d5342af7b4e2d46659f65b1c0ecc13",{"name":24,"url":287,"size":288,"sha256":289,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.0\u002Fultralog-macos-arm64.dmg",13287097,"e905c847711b17b2fdd6cb51b884b8cc37c250d50b3e5fa64bc33553d4191720",{"name":32,"url":291,"size":292,"sha256":293,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.0\u002Fultralog-macos-intel.dmg",14222739,"bccb0e306aebdd73420d6e6a0f69f6b5db1b99c1d03c3ac82918339c67db1531",{"name":37,"url":295,"size":296,"sha256":297,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.13.0\u002Fultralog-windows.zip",11437965,"9874a1d2a41955b9b60fb512402f710ed6c03476a7691841f3e64764187f4f49",{"tag":299,"name":299,"url":300,"publishedAt":301,"prerelease":8,"latest":8,"highlights":302,"notesHtml":307,"assets":308},"v2.12.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.12.1","2026-08-12T17:32:54Z",[303,304,305,306],"\u003Cstrong>Fixed a DNS-rebinding vulnerability in the MCP server.\u003C\u002Fstrong> The Claude Desktop integration&#39;s HTTP transport was affected by an advisory in \u003Ccode>rmcp\u003C\u002Fcode> (all versions below 1.4.0). Updated to 3.1.2, which restricts connections to localhost by default.","\u003Cstrong>Removed two unsound, unmaintained dependencies.\u003C\u002Fstrong> \u003Ccode>serde_yml\u003C\u002Fcode> and \u003Ccode>libyml\u003C\u002Fcode>, used for reading adapter specs, were flagged unsound with no fixed release available (RUSTSEC-2025-0068). They have been replaced with the maintained \u003Ccode>serde_norway\u003C\u002Fcode>, so both are gone from the build entirely.","\u003Cstrong>OBDLink logs now show the correct time axis.\u003C\u002Fstrong> A 2049-second OBDLink (iOS) CSV export was rendering as a 2.05-second log, because the time column was always read as milliseconds. The unit is now taken from the column header, so both \u003Ccode>Time (sec)\u003C\u002Fcode> and \u003Ccode>Time (msec)\u003C\u002Fcode> exports read correctly. Thanks to the reporter of #80.","\u003Cstrong>ECU adapter definitions now load from the OpenECU Alliance API again.\u003C\u002Fstrong> Every adapter and protocol fetch had been failing silently, so the app always fell back to the specs built in at compile time. Channel-name normalisation now picks up current definitions, and the MegaSquirt adapter — which was being dropped entirely — loads again.","\u003Ch3>What&#39;s New\u003C\u002Fh3>\n\u003Cp>A maintenance release covering two security advisories and two bug fixes. Recommended for all users.\u003C\u002Fp>\n\u003Ch4>Security\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Fixed a DNS-rebinding vulnerability in the MCP server.\u003C\u002Fstrong> The Claude Desktop integration&#39;s HTTP\ntransport was affected by an advisory in \u003Ccode>rmcp\u003C\u002Fcode> (all versions below 1.4.0). Updated to 3.1.2,\nwhich restricts connections to localhost by default.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Removed two unsound, unmaintained dependencies.\u003C\u002Fstrong> \u003Ccode>serde_yml\u003C\u002Fcode> and \u003Ccode>libyml\u003C\u002Fcode>, used for reading\nadapter specs, were flagged unsound with no fixed release available (RUSTSEC-2025-0068). They\nhave been replaced with the maintained \u003Ccode>serde_norway\u003C\u002Fcode>, so both are gone from the build entirely.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Fixes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>OBDLink logs now show the correct time axis.\u003C\u002Fstrong> A 2049-second OBDLink (iOS) CSV export was\nrendering as a 2.05-second log, because the time column was always read as milliseconds. The\nunit is now taken from the column header, so both \u003Ccode>Time (sec)\u003C\u002Fcode> and \u003Ccode>Time (msec)\u003C\u002Fcode> exports read\ncorrectly. Thanks to the reporter of #80.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ECU adapter definitions now load from the OpenECU Alliance API again.\u003C\u002Fstrong> Every adapter and\nprotocol fetch had been failing silently, so the app always fell back to the specs built in at\ncompile time. Channel-name normalisation now picks up current definitions, and the MegaSquirt\nadapter — which was being dropped entirely — loads again.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Under the hood\u003C\u002Fh4>\n\u003Cp>Migrated to Rust edition 2024, and refreshed every dependency to its latest release, including\negui 0.34 to 0.36 (the UI framework), egui_plot 0.35 to 0.37, printpdf 0.9 to 0.12 (chart PDF\nexport), and rust-i18n 3.1 to 4.2 (translations). No functional change is expected from these,\nbut they touch rendering, PDF export, and the 15 shipped languages — please report anything that\nlooks off.\u003C\u002Fp>\n",[309,313,317,321],{"name":16,"url":310,"size":311,"sha256":312,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.1\u002Fultralog-linux.tar.gz",11277088,"67e8db934d0badd4f42a98cd9916ad8a691950bb7063f8939936be7fba2f787e",{"name":24,"url":314,"size":315,"sha256":316,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.1\u002Fultralog-macos-arm64.dmg",13015495,"f00834906f2a8e2a55a30091ff717dc867cbb8c3c17cfe810f71757970b4f039",{"name":32,"url":318,"size":319,"sha256":320,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.1\u002Fultralog-macos-intel.dmg",13913138,"bb287af1126be6890941323a5e74787014a6d5c33162dc6bc82503b5cd835471",{"name":37,"url":322,"size":323,"sha256":324,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.1\u002Fultralog-windows.zip",11135316,"430ec149a969be16680d8a62286084b988a31a85d807a0737a57bde27295f395",{"tag":326,"name":327,"url":328,"publishedAt":329,"prerelease":8,"latest":8,"highlights":330,"notesHtml":337,"assets":338},"v2.12.0","v2.12.0 — MHD Tuning support, '#' metadata header fix","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.12.0","2026-08-11T17:13:53Z",[331,332,333,334,335,336],"Units are read straight from the column headers, with MHD&#39;s degree notation translated: \u003Ccode>(*C)\u003C\u002Fcode> → °C, \u003Ccode>(*)\u003C\u002Fcode> → °, \u003Ccode>(*CRK)\u003C\u002Fcode> → °CRK, and \u003Ccode>(-)\u003C\u002Fcode> for unitless channels","\u003Ccode>Time\u003C\u002Fcode> is read as seconds and normalized to start at zero","The tune file name (e.g. \u003Ccode>MHD 5.26 IJE0S ST2V7.bin\u003C\u002Fcode>) is kept as log metadata instead of cluttering the channel list","Unparseable fields carry the last known value forward, so columns never shift out of alignment","\u003Cstrong>Speeduino\u003C\u002Fstrong>: truncated MLG v2 headers caused an index-out-of-bounds panic","\u003Cstrong>App\u003C\u002Fstrong>: a parser panic on the loader thread left the UI stuck on the loading spinner forever — errors now surface as a toast","\u003Ch3>Highlights\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>First stable release since v2.10.1.\u003C\u002Fstrong> It carries the MHD Tuning support below plus everything that was staged for 2.11.0 but never shipped stable — a deep correctness and performance sweep, settings persistence, and a rewritten expression engine.\u003C\u002Fp>\n\u003Chr>\n\u003Ch3>New: MHD Tuning log support\u003C\u002Fh3>\n\u003Cp>UltraLog now reads CSV datalogs exported from the MHD Tuning app — BMW N54, N55, S55, B58 and other platforms flashed with MHD.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Units are read straight from the column headers, with MHD&#39;s degree notation translated: \u003Ccode>(*C)\u003C\u002Fcode> → °C, \u003Ccode>(*)\u003C\u002Fcode> → °, \u003Ccode>(*CRK)\u003C\u002Fcode> → °CRK, and \u003Ccode>(-)\u003C\u002Fcode> for unitless channels\u003C\u002Fli>\n\u003Cli>\u003Ccode>Time\u003C\u002Fcode> is read as seconds and normalized to start at zero\u003C\u002Fli>\n\u003Cli>The tune file name (e.g. \u003Ccode>MHD 5.26 IJE0S ST2V7.bin\u003C\u002Fcode>) is kept as log metadata instead of cluttering the channel list\u003C\u002Fli>\n\u003Cli>Unparseable fields carry the last known value forward, so columns never shift out of alignment\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Fixed: logs with \u003Ccode>#\u003C\u002Fcode> metadata headers loaded with no channels\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>This is the bug behind #78.\u003C\u002Fstrong> MHD exports — and OBD-II app exports such as OBDLink — start with a block of \u003Ccode>#\u003C\u002Fcode>-prefixed metadata lines before the real CSV header:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>#Encoding: UTF-8\n#Ecu PRGID: 7616431\n#VIN: ...\nTime,Boost (Bar),Coolant (*C),RPM (RPM),...\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Every format detector inspects the \u003Cstrong>first line\u003C\u002Fstrong> of a file. That line was a comment, so nothing matched, detection fell through to the default parser, and the log opened with zero channels — the app appeared to do nothing at all.\u003C\u002Fp>\n\u003Cp>Text logs are now normalized before format detection: a leading UTF-8 BOM is stripped, and a leading block of \u003Ccode>#\u003C\u002Fcode> comment lines is dropped so the real header row is what detection sees. This fixes MHD and the OBDLink class of failure together, and any future exporter that writes a comment preamble.\u003C\u002Fp>\n\u003Cp>Thanks to \u003Cstrong>@Turbo-Tuning\u003C\u002Fstrong> for the report and the sample log, and to \u003Cstrong>@andris-silis\u003C\u002Fstrong> for spotting the same failure with OBDLink and narrowing it to the \u003Ccode>#\u003C\u002Fcode> lines.\u003C\u002Fp>\n\u003Chr>\n\u003Ch3>Also in this release (staged for 2.11.0)\u003C\u002Fh3>\n\u003Ch4>Crash and data-correctness fixes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Speeduino\u003C\u002Fstrong>: truncated MLG v2 headers caused an index-out-of-bounds panic\u003C\u002Fli>\n\u003Cli>\u003Cstrong>App\u003C\u002Fstrong>: a parser panic on the loader thread left the UI stuck on the loading spinner forever — errors now surface as a toast\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Haltech\u003C\u002Fstrong>: unparseable fields (blank, \u003Ccode>N\u002FA\u003C\u002Fcode>, text gears) shifted every later column left, misaligning the whole row\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Haltech\u003C\u002Fstrong>: sessions crossing midnight produced non-monotonic timestamps, breaking time-shifted computed channels like \u003Ccode>RPM@-0.1s\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Normalization\u003C\u002Fstrong>: a channel named \u003Ccode>Speed\u003C\u002Fcode> normalized to RPM or Vehicle Speed nondeterministically between launches\u003C\u002Fli>\n\u003Cli>\u003Cstrong>App\u003C\u002Fstrong>: opening a file while another was loading silently dropped the first result; multi-file drag-and-drop loaded only the first file\u003C\u002Fli>\n\u003Cli>\u003Cstrong>App\u003C\u002Fstrong>: analysis results were not reindexed when a file was removed, attaching cached analyses to the wrong file\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Adapters\u003C\u002Fstrong>: spec cache filenames are sanitized against path traversal\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Performance\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>The MCP\u002FIPC server no longer forces a 10 Hz repaint forever — the GUI wakes on demand, ending idle battery drain\u003C\u002Fli>\n\u003Cli>Chart downsampling is cached per channel and recomputed only when the viewport changes, instead of every channel every frame\u003C\u002Fli>\n\u003Cli>Scatter heatmaps are built once per axis selection rather than rebuilt per frame\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Settings persistence\u003C\u002Fstrong> — unit preferences, font scale, colorblind mode, field normalization, cursor tracking, auto-update preference, and custom channel mappings now survive restarts\u003C\u002Fli>\n\u003Cli>\u003Ccode>Esc\u003C\u002Fcode> stops playback and \u003Ccode>Cmd\u002FCtrl+E\u003C\u002Fcode> exports the current view as PNG\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Under the hood\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>The \u003Ccode>meval\u003C\u002Fcode> formula dependency was replaced with a built-in expression engine. \u003Ccode>meval\u003C\u002Fcode> was unmaintained and its transitive \u003Ccode>nom\u003C\u002Fcode> 1.2.4 dependency is rejected by future Rust versions. Formula behavior is unchanged; formulas now compile once and evaluate with no parsing or allocation per record.\u003C\u002Fli>\n\u003C\u002Ful>\n",[339,343,347,351],{"name":16,"url":340,"size":341,"sha256":342,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.0\u002Fultralog-linux.tar.gz",10116116,"9fbfa3da11adfb6e14ab6ab495ec2250ab9b38026d7098314c4621cfe505d516",{"name":24,"url":344,"size":345,"sha256":346,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.0\u002Fultralog-macos-arm64.dmg",12054825,"d75f7f45fe9504a1796257813329bab5903cc6c34d8b79de0df010f0fe21e711",{"name":32,"url":348,"size":349,"sha256":350,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.0\u002Fultralog-macos-intel.dmg",12728694,"36ec81a036b37ac5c41daedbebebf3c1a714a4bc535e0813ea7e3400a09c828b",{"name":37,"url":352,"size":353,"sha256":354,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.12.0\u002Fultralog-windows.zip",9910500,"1b95521bf85575fe7c07910f87bf5ff34b5c0de2634cf27f818e07ad68d2fc93",{"tag":356,"name":356,"url":357,"publishedAt":358,"prerelease":8,"latest":8,"highlights":359,"notesHtml":365,"assets":366},"v2.10.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.10.1","2026-06-04T02:25:26Z",[360,361,362,363,364],"\u003Cstrong>rustls-webpki\u003C\u002Fstrong> 0.103.9 → 0.103.13 — pulls in upstream security advisory fixes (CRL parsing panic + name-constraint enforcement)","\u003Cstrong>tar\u003C\u002Fstrong> 0.4.44 → 0.4.45","\u003Cstrong>grid\u003C\u002Fstrong> 1.0.0 → 1.0.1","Corrected version metadata across the site and structured data","Updated install instructions to reflect notarized builds","\u003Ch3>UltraLog v2.10.1\u003C\u002Fh3>\n\u003Ch4>macOS installs are now signed &amp; notarized by Apple\u003C\u002Fh4>\n\u003Cp>The biggest change in this release: macOS builds are now signed with a Developer ID\ncertificate, notarized by Apple, and stapled. The &quot;Apple cannot check it for malicious\nsoftware&quot; warning is gone — UltraLog opens normally on first launch, even offline.\u003C\u002Fp>\n\u003Cp>If you previously worked around the warning, no action is needed; just download the new\nDMG and drag it to Applications.\u003C\u002Fp>\n\u003Ch4>Security &amp; dependency updates\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>rustls-webpki\u003C\u002Fstrong> 0.103.9 → 0.103.13 — pulls in upstream security advisory fixes\n(CRL parsing panic + name-constraint enforcement)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>tar\u003C\u002Fstrong> 0.4.44 → 0.4.45\u003C\u002Fli>\n\u003Cli>\u003Cstrong>grid\u003C\u002Fstrong> 1.0.0 → 1.0.1\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Housekeeping\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Corrected version metadata across the site and structured data\u003C\u002Fli>\n\u003Cli>Updated install instructions to reflect notarized builds\u003C\u002Fli>\n\u003C\u002Ful>\n",[367,371,375,379],{"name":16,"url":368,"size":369,"sha256":370,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.1\u002Fultralog-linux.tar.gz",10257135,"c8508a114d7d4d9d852477af5b81feab7b07b879792295d43d9a13a6012cfc5e",{"name":24,"url":372,"size":373,"sha256":374,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.1\u002Fultralog-macos-arm64.dmg",12238618,"f9ca09b0b1e17bea1187adcc6a566de878bbacf2f9aec8aab018e860bc32efe4",{"name":32,"url":376,"size":377,"sha256":378,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.1\u002Fultralog-macos-intel.dmg",12819767,"29ce1d41227a5dd35c8e37d86a81d30ecd2dcc668b5c7e35a257d63dfac6880d",{"name":37,"url":380,"size":381,"sha256":382,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.1\u002Fultralog-windows.zip",9811743,"0ce385625eeef919974fcecee8461cb474bf3960dfa2983ff85a680c44d182fd",{"tag":384,"name":384,"url":385,"publishedAt":386,"prerelease":8,"latest":8,"highlights":387,"notesHtml":393,"assets":394},"v2.10.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.10.0","2026-06-02T17:27:52Z",[388,389,390,391,392],"Parses the Log Time (HH:MM:SS.mmm) timestamp column, normalized to relative seconds","Boolean channels (e.g. Clutch In True\u002FFalse) charted as 1\u002F0","Trailing-comma handling and name-based unit inference (IAP→kPa, temps→°C, TPS→%, AFR)","UTF-8 BOM tolerant; handles wall-clock midnight wrap-around","Auto-detected — just open the .csv","\u003Ch3>v2.10.0 — Woolich Racing Tuned support\u003C\u002Fh3>\n\u003Cp>Adds full support for Woolich Racing Tuned (WRT) CSV log files, for Yamaha\u002FKawasaki\u002FSuzuki\u002FHonda\u002FBMW sportbike ECUs flashed and logged through the WRT datalogger.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Parses the Log Time (HH:MM:SS.mmm) timestamp column, normalized to relative seconds\u003C\u002Fli>\n\u003Cli>Boolean channels (e.g. Clutch In True\u002FFalse) charted as 1\u002F0\u003C\u002Fli>\n\u003Cli>Trailing-comma handling and name-based unit inference (IAP→kPa, temps→°C, TPS→%, AFR)\u003C\u002Fli>\n\u003Cli>UTF-8 BOM tolerant; handles wall-clock midnight wrap-around\u003C\u002Fli>\n\u003Cli>Auto-detected — just open the .csv\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>--\u003C\u002Fp>\n",[395,399,403,407],{"name":16,"url":396,"size":397,"sha256":398,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.0\u002Fultralog-linux.tar.gz",10258874,"4ab13a699f031e2b505a8638c7575cd71c3b4c0bc0875aebc5925cce7545fe33",{"name":24,"url":400,"size":401,"sha256":402,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.0\u002Fultralog-macos-arm64.dmg",12220317,"c751e3b6cfc9d397a4f48d637e1f3fc4b11e70d656d075bbb0145c7189d9fd00",{"name":32,"url":404,"size":405,"sha256":406,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.0\u002Fultralog-macos-intel.dmg",12797664,"90eba94f2611a69e61a7f9e6074488dc4ea8bf375ac1f99f6ae0afeece6a6531",{"name":37,"url":408,"size":409,"sha256":410,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.10.0\u002Fultralog-windows.zip",9807544,"c0d6575197d6b3162fc85176c8f905d8f091ff1a9732fab6e6cbc896941f874a",{"tag":412,"name":412,"url":413,"publishedAt":414,"prerelease":8,"latest":8,"highlights":415,"notesHtml":417,"assets":418},"v2.9.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.9.0","2026-04-25T23:11:36Z",[416],"Release v2.9.0: chart UX fixes, grid toggle, MLG timestamp fix (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F68\" rel=\"noopener\">#68\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Release v2.9.0: chart UX fixes, grid toggle, MLG timestamp fix (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F68\" rel=\"noopener\">#68\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[419,423,427,431],{"name":16,"url":420,"size":421,"sha256":422,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.9.0\u002Fultralog-linux.tar.gz",10244641,"08d7efb233398dfe2cf069300f7ed1af4a347537db334b29ded2d3fb184cc096",{"name":24,"url":424,"size":425,"sha256":426,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.9.0\u002Fultralog-macos-arm64.dmg",12262422,"abaa18054851d668b8c8b92fa53660fa605faac185baef9406af0c967beea702",{"name":32,"url":428,"size":429,"sha256":430,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.9.0\u002Fultralog-macos-intel.dmg",12844789,"cfdec42980d86ef295bddc13693eb3b16dbde0a2181689656191d67999c4d9c9",{"name":37,"url":432,"size":433,"sha256":434,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.9.0\u002Fultralog-windows.zip",9798730,"cf31f14c4dd2d51f9e52a3787801549c5fbd7bdc2449840cca1bcbf20253f43d",{"tag":436,"name":437,"url":438,"publishedAt":439,"prerelease":8,"latest":8,"highlights":440,"notesHtml":447,"assets":448},"v2.8.2","v2.8.2 - Motorsport Electronics Support","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.8.2","2026-04-21T13:33:10Z",[441,442,443,444,445,446],"Detection of ME221 and ME442 logs without collisions against other \u003Ccode>Time,\u003C\u002Fcode>-prefixed CSV formats","Time axis rendered in real seconds, normalized so logs start at t = 0","Automatic unit inference from channel names (RPM, kPa, %, °C, V, etc.) since ME Tuner does not embed units in headers","Trailing \u003Ccode>Dummy\u003C\u002Fcode> column silently stripped","Comprehensive unit tests cover detection, RomRaider rejection, generic CSV rejection, time-seconds scaling, first-timestamp normalization, and unit inference","Integration tests parse two bundled real ME221 example logs and assert the time range is in seconds","\u003Ch3>New ECU Support: Motorsport Electronics (ME221 \u002F ME442)\u003C\u002Fh3>\n\u003Cp>UltraLog now parses ME Tuner CSV exports from Motorsport Electronics ECUs — popular in turbo and supercharged MX-5, Ford Focus ST150, Honda S2000, Toyota Starlet, and Mitsubishi Evo builds.\u003C\u002Fp>\n\u003Ch3>Bug Fix: ME221 Time Scaling\u003C\u002Fh3>\n\u003Cp>Before this release, importing an ME221 CSV produced a log with the time axis compressed by roughly 1000x — a 111-second log would render as 0.111 seconds, making the data effectively unreadable.\u003C\u002Fp>\n\u003Cp>The root cause was that both ME Tuner and RomRaider CSV exports start with a \u003Ccode>Time,\u003C\u002Fcode> header, and RomRaider&#39;s format detection was permissive enough to claim ME221 files. The RomRaider parser then divided the Time column by 1000 on the assumption it was milliseconds, while ME Tuner actually exports Time in seconds.\u003C\u002Fp>\n\u003Cp>The fix adds a dedicated Motorsport Electronics parser with strict detection (exact \u003Ccode>Time\u003C\u002Fcode> first column plus ME221-specific fingerprint columns like \u003Ccode>Sync status\u003C\u002Fcode>, \u003Ccode>Injector duty\u003C\u002Fcode>, \u003Ccode>WBO2 Curr. AFR\u003C\u002Fcode>, and \u003Ccode>DBW Status\u003C\u002Fcode>), dispatched before RomRaider so it correctly claims ME Tuner exports.\u003C\u002Fp>\n\u003Ch3>What Works\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Detection of ME221 and ME442 logs without collisions against other \u003Ccode>Time,\u003C\u002Fcode>-prefixed CSV formats\u003C\u002Fli>\n\u003Cli>Time axis rendered in real seconds, normalized so logs start at t = 0\u003C\u002Fli>\n\u003Cli>Automatic unit inference from channel names (RPM, kPa, %, °C, V, etc.) since ME Tuner does not embed units in headers\u003C\u002Fli>\n\u003Cli>Trailing \u003Ccode>Dummy\u003C\u002Fcode> column silently stripped\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Testing\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Comprehensive unit tests cover detection, RomRaider rejection, generic CSV rejection, time-seconds scaling, first-timestamp normalization, and unit inference\u003C\u002Fli>\n\u003Cli>Integration tests parse two bundled real ME221 example logs and assert the time range is in seconds\u003C\u002Fli>\n\u003C\u002Ful>\n",[449,453,457,461],{"name":16,"url":450,"size":451,"sha256":452,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.2\u002Fultralog-linux.tar.gz",10271283,"a5a31a69c9cc7d051abd0c8220e303056e39fb27a96fd8938acbebe3be86d34d",{"name":24,"url":454,"size":455,"sha256":456,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.2\u002Fultralog-macos-arm64.dmg",12240731,"2eb3e3d104fa830b727d5a95668c69e24c6da30523ade430e471c0e2f4a5a949",{"name":32,"url":458,"size":459,"sha256":460,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.2\u002Fultralog-macos-intel.dmg",12847054,"9f7193cc9f91248a59365ccaf48ab6590c075d845af9cf5664c3485eb7829bce",{"name":37,"url":462,"size":463,"sha256":464,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.2\u002Fultralog-windows.zip",9797693,"588d4b11c971a75d04d76bb38f50c0093541557705a88ff9ce684fcdffb53e59",{"tag":466,"name":467,"url":468,"publishedAt":469,"prerelease":8,"latest":8,"highlights":470,"notesHtml":477,"assets":478},"v2.8.1","v2.8.1 — Link ECU Parser Fix","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.8.1","2026-04-14T13:10:13Z",[471,472,473,474,475,476],"Produced false-positive channel detections","Read each 8-byte data pair as (value, time) when the actual format is (time, value)","Silently skipped the first 8 bytes of every channel&#39;s data section","Filtered out pre-trigger samples with negative times","Resulted in ~24-hour time ranges and all-zero values on every file","Added plausibility checks for Link timing and channel values to catch regressions","\u003Ch3>Bug Fix\u003C\u002Fh3>\n\u003Cp>  Corrected Link ECU binary parsing across all format variants (.llg, .llg5, .llgx)\u003C\u002Fp>\n\u003Cp>  The previous Link parser used a byte-scan heuristic for channel discovery that had several critical issues:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Produced false-positive channel detections\u003C\u002Fli>\n\u003Cli>Read each 8-byte data pair as (value, time) when the actual format is (time, value)\u003C\u002Fli>\n\u003Cli>Silently skipped the first 8 bytes of every channel&#39;s data section\u003C\u002Fli>\n\u003Cli>Filtered out pre-trigger samples with negative times\u003C\u002Fli>\n\u003Cli>Resulted in ~24-hour time ranges and all-zero values on every file\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>  The parser has been rewritten around proper block-based parsing, walking the file&#39;s &lt;3-byte marker&gt; block framing to correctly identify channel definitions and read data streams.\u003C\u002Fp>\n\u003Cp>  Before: Time range 0–89,477s (24.8 hours), all-zero values on every file.\n  After: Physically plausible time ranges (21–52s) with real RPM, MAP, lambda, and other channel values.\u003C\u002Fp>\n\u003Ch3>Testing\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Added plausibility checks for Link timing and channel values to catch regressions\u003C\u002Fli>\n\u003Cli>Verified against all example Link files in the repo and additional .llgx files from real G4X hardware\u003C\u002Fli>\n\u003C\u002Ful>\n",[479,483,487,491],{"name":16,"url":480,"size":481,"sha256":482,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.1\u002Fultralog-linux.tar.gz",10297600,"d67a00fcc593e8c34fc50205ce68d4d4508c4a0849f16f2208c8daeeddf95008",{"name":24,"url":484,"size":485,"sha256":486,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.1\u002Fultralog-macos-arm64.dmg",12241727,"0b817c06d0e00ac2fdec0cf9da26875597f5c3002a986a0cd6339b8aae409855",{"name":32,"url":488,"size":489,"sha256":490,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.1\u002Fultralog-macos-intel.dmg",12854484,"6c1181b0ebe943c2f98406086dcad3f91912625176f0e62a52033cdb9d033afc",{"name":37,"url":492,"size":493,"sha256":494,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.1\u002Fultralog-windows.zip",9810564,"268a1b90c0f4f4a97f2986478749f5b6f3bdb7af5e81d38c5a4d5a7826a739a0",{"tag":496,"name":496,"url":497,"publishedAt":498,"prerelease":8,"latest":8,"highlights":499,"notesHtml":506,"assets":507},"v2.8.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.8.0","2026-04-02T02:22:54Z",[500,501,502,503,504,505],"\u003Cstrong>Toggle stacked mode\u003C\u002Fstrong> from the view options to split your chart into separate vertically-stacked panels","\u003Cstrong>Up to 10 plot areas\u003C\u002Fstrong> — create named panels like &quot;Engine&quot;, &quot;Fuel&quot;, &quot;Temps&quot; and assign channels to each","\u003Cstrong>Drag to resize\u003C\u002Fstrong> — adjust the height of each plot area by dragging the dividers between them","\u003Cstrong>Collapse panels\u003C\u002Fstrong> — minimize plot areas you don&#39;t need right now without losing your channel assignments","\u003Cstrong>Per-plot channel management\u003C\u002Fstrong> — add and remove channels from individual plots, or move channels between plots","\u003Cstrong>Shared timeline\u003C\u002Fstrong> — all stacked plots share the same time axis, cursor position, and playback controls, so everything stays synchronized as you scrub through the log","\u003Ch3>What&#39;s New in v2.8.0\u003C\u002Fh3>\n\u003Ch4>Stackable Log Viewer\u003C\u002Fh4>\n\u003Cp>The most requested visualization feature is here — \u003Cstrong>stacked plot areas\u003C\u002Fstrong> let you split your chart into multiple independent panels, each with its own Y-axis and channel set. No more struggling to compare RPM (0–8000) and Lambda (0.7–1.3) on the same scale.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Toggle stacked mode\u003C\u002Fstrong> from the view options to split your chart into separate vertically-stacked panels\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Up to 10 plot areas\u003C\u002Fstrong> — create named panels like &quot;Engine&quot;, &quot;Fuel&quot;, &quot;Temps&quot; and assign channels to each\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Drag to resize\u003C\u002Fstrong> — adjust the height of each plot area by dragging the dividers between them\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Collapse panels\u003C\u002Fstrong> — minimize plot areas you don&#39;t need right now without losing your channel assignments\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Per-plot channel management\u003C\u002Fstrong> — add and remove channels from individual plots, or move channels between plots\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Shared timeline\u003C\u002Fstrong> — all stacked plots share the same time axis, cursor position, and playback controls, so everything stays synchronized as you scrub through the log\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Works with all tools\u003C\u002Fstrong> — stacked mode integrates with the existing channel selection, color assignment, min\u002Fmax legends, and cursor value readouts\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>When you disable stacked mode, all channels consolidate back to a single chart — nothing is lost.\u003C\u002Fp>\n\u003Ch4>MCP Server — Claude Desktop Integration\u003C\u002Fh4>\n\u003Cp>UltraLog now embeds a \u003Cstrong>Model Context Protocol (MCP) server\u003C\u002Fstrong> that lets Claude Desktop (or any MCP-compatible AI client) control the application in real time. When UltraLog launches, it starts an MCP endpoint at \u003Ccode>http:\u002F\u002Flocalhost:52453\u002Fmcp\u003C\u002Fcode> that exposes \u003Cstrong>23 tools\u003C\u002Fstrong> for AI-assisted log analysis:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>File management\u003C\u002Fstrong> — Load, close, and inspect ECU log files\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Channel operations\u003C\u002Fstrong> — List channels, select\u002Fdeselect channels for display, get time-series data and statistics (min, max, mean, std dev, median)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Computed channels\u003C\u002Fstrong> — Create, delete, and list computed channels from mathematical formulas\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Formula evaluation\u003C\u002Fstrong> — Evaluate arbitrary formulas against log data without creating permanent channels\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Playback control\u003C\u002Fstrong> — Play, pause, stop, set cursor position, and set visible time range\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Analysis tools\u003C\u002Fstrong> — Find peaks in channel data, compute Pearson correlation between channels\u003C\u002Fli>\n\u003Cli>\u003Cstrong>View switching\u003C\u002Fstrong> — Switch between time-series chart, scatter plot, and histogram views\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>To connect Claude Desktop, add UltraLog as a Streamable HTTP MCP server pointing to \u003Ccode>http:\u002F\u002Flocalhost:52453\u002Fmcp\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch4>New ECU Format: BlueDriver OBD-II\u003C\u002Fh4>\n\u003Cp>Added support for \u003Cstrong>BlueDriver\u003C\u002Fstrong> OBD-II diagnostic scanner log files (.csv). BlueDriver is a popular Bluetooth OBD-II scanner used for reading live data from any OBD-II compliant vehicle.\u003C\u002Fp>\n\u003Ch4>AFR\u002FLambda Unit Preference\u003C\u002Fh4>\n\u003Cp>Added a new unit preference for \u003Cstrong>Air-Fuel Ratio (AFR) and Lambda\u003C\u002Fstrong> display, letting you switch between AFR and Lambda units across all channels that report mixture data.\u003C\u002Fp>\n\u003Ch4>UI Polish\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Improved \u003Cstrong>histogram\u003C\u002Fstrong> and \u003Cstrong>scatter plot\u003C\u002Fstrong> tool properties panels with better layout and controls\u003C\u002Fli>\n\u003Cli>Refined tool properties panel styling\u003C\u002Fli>\n\u003Cli>Cursor tracking now \u003Cstrong>defaults to on\u003C\u002Fstrong> for a better out-of-the-box experience\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Under the Hood\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Rust toolchain updated\u003C\u002Fstrong> from 1.92.0 to 1.94.1\u003C\u002Fli>\n\u003Cli>\u003Cstrong>egui ecosystem upgraded\u003C\u002Fstrong> to eframe 0.34.1, egui_plot 0.35.0, egui_extras 0.34.1\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dependency updates\u003C\u002Fstrong>: zip 8.5, printpdf 0.9 (complete PDF export rewrite), strum 0.28, dirs 6.0, ureq 3.3, serde_yml (replacing deprecated serde_yaml), chrono 0.4.44\u003C\u002Fli>\n\u003Cli>\u003Cstrong>OpenECU Alliance API\u003C\u002Fstrong> — Fixed spec refresh parsing for the updated API response format; added Diagnostics channel category\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PDF export\u003C\u002Fstrong> rewritten to use printpdf 0.9&#39;s Op-based API\u003C\u002Fli>\n\u003C\u002Ful>\n",[508,512,516,520],{"name":16,"url":509,"size":510,"sha256":511,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.0\u002Fultralog-linux.tar.gz",10297546,"9cee7e9cc1e0b610e2bf7ce150ddd43387f2d649c2ffd7ab8bb16bd4c14e7591",{"name":24,"url":513,"size":514,"sha256":515,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.0\u002Fultralog-macos-arm64.dmg",12241729,"006df3e419a057fbf863ee5f529394541d95147902d537f12289efd8feeb3e70",{"name":32,"url":517,"size":518,"sha256":519,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.0\u002Fultralog-macos-intel.dmg",12854498,"02f7ca74176e8f266484c438a07576a281d5fd67cd8a957388121f859ac481c5",{"name":37,"url":521,"size":493,"sha256":522,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.8.0\u002Fultralog-windows.zip","1a6dd700f0d2a1fe04755b1b4bf6ce8e912fe3f0ba64ec9a1deb41dfd2ebd8a4",{"tag":524,"name":524,"url":525,"publishedAt":526,"prerelease":8,"latest":8,"highlights":527,"notesHtml":528,"assets":529},"v2.6.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.6.0","2026-02-23T03:02:35Z",[],"",[530,534,538,542],{"name":16,"url":531,"size":532,"sha256":533,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.6.0\u002Fultralog-linux.tar.gz",8438777,"a8969933303c2e261697b64736f0f2f43999ebfd5a379ac291f6794caa42b9aa",{"name":24,"url":535,"size":536,"sha256":537,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.6.0\u002Fultralog-macos-arm64.dmg",10597846,"efcbad7bfbcc1d093e9664f0ea90643c6a314c88f56a4b96afa7a872ccd2eef5",{"name":32,"url":539,"size":540,"sha256":541,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.6.0\u002Fultralog-macos-intel.dmg",10973093,"69315813a4afe701a30df4eb9af19ab7d0f7983d0388c6beb790254e36f0a8fd",{"name":37,"url":543,"size":544,"sha256":545,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.6.0\u002Fultralog-windows.zip",7824945,"d28c5ba2e962483cb20efe51713d893cc46cbb31be0eeed1647aaa8ce78cc928",{"tag":547,"name":547,"url":548,"publishedAt":549,"prerelease":8,"latest":8,"highlights":550,"notesHtml":552,"assets":553},"v2.5.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.5.0","2026-02-23T02:18:31Z",[551],"Adds support for a variety of Megasquirt logs (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F56\" rel=\"noopener\">#56\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Adds support for a variety of Megasquirt logs (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F56\" rel=\"noopener\">#56\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[554,558,562,566],{"name":16,"url":555,"size":556,"sha256":557,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.5.0\u002Fultralog-linux.tar.gz",8437201,"e33a73fa6e0703d6fa59a2a0aef8518ebdb9d7f58e3a0f45e85f9c2b0f425baf",{"name":24,"url":559,"size":560,"sha256":561,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.5.0\u002Fultralog-macos-arm64.dmg",10599869,"8854762b2e68fa4f389fd8b780390d349875ea1c03acc11f7636eb6f5855b384",{"name":32,"url":563,"size":564,"sha256":565,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.5.0\u002Fultralog-macos-intel.dmg",10967403,"daaf1299bde55c09d921bf5fef8cf347c363828d4dec334d34e286b7d49507fe",{"name":37,"url":567,"size":568,"sha256":569,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.5.0\u002Fultralog-windows.zip",7824319,"ecd3fc5938088ed5d641b8e8f83630ce97f91b4ad2626db4b70f78549e20860f",{"tag":571,"name":571,"url":572,"publishedAt":573,"prerelease":8,"latest":8,"highlights":574,"notesHtml":528,"assets":575},"v2.4.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.4.1","2026-02-19T13:46:50Z",[],[576,580,584,588],{"name":16,"url":577,"size":578,"sha256":579,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.1\u002Fultralog-linux.tar.gz",8431667,"15400eed0f72e786c65e8505d2e84df4beac7bc2a5f341ab132705fa6fd0a493",{"name":24,"url":581,"size":582,"sha256":583,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.1\u002Fultralog-macos-arm64.dmg",10604054,"e5f0e0a9933a23ba191d41de4e740f7190a3aaa380aab715349a1cbc693b4987",{"name":32,"url":585,"size":586,"sha256":587,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.1\u002Fultralog-macos-intel.dmg",10966310,"88c487cd7c46b5256059ed1ab51d7aaa1a13404baa9cf6a77e62d099aa03afe5",{"name":37,"url":589,"size":590,"sha256":591,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.1\u002Fultralog-windows.zip",7826560,"be443fb111461e606580b2655a9e222475b82ba235026330f48185668387d6bd",{"tag":593,"name":593,"url":594,"publishedAt":595,"prerelease":8,"latest":8,"highlights":596,"notesHtml":598,"assets":599},"v2.4.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.4.0","2026-02-19T00:11:22Z",[597],"Implements improvements to the zooming behavior (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F53\" rel=\"noopener\">#53\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Implements improvements to the zooming behavior (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F53\" rel=\"noopener\">#53\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[600,604,608,612],{"name":16,"url":601,"size":602,"sha256":603,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.0\u002Fultralog-linux.tar.gz",8435616,"37e1c7598e127254fd2e892088ff1b5d2b99a65db57db86d127c6579c91be31b",{"name":24,"url":605,"size":606,"sha256":607,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.0\u002Fultralog-macos-arm64.dmg",10600134,"2a3e7f6395142f4625706a9542e447cbedc66fb4be0932016e984af98248ac1c",{"name":32,"url":609,"size":610,"sha256":611,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.0\u002Fultralog-macos-intel.dmg",10967471,"cf6943f0c656c0df5d480b480de03bdfeda582fb1bcfa3d303832d4d0e9ccd43",{"name":37,"url":613,"size":614,"sha256":615,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.4.0\u002Fultralog-windows.zip",7826132,"eb1db1f16b84ad1387a3f58deafa46430b775719ff5a5d6464e05f5234e0d6c8",{"tag":617,"name":617,"url":618,"publishedAt":619,"prerelease":8,"latest":8,"highlights":620,"notesHtml":622,"assets":623},"v2.3.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.3.1","2026-02-17T23:11:08Z",[621],"Updates dependencies and addresses various bugs within the app (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F51\" rel=\"noopener\">#51\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Updates dependencies and addresses various bugs within the app (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F51\" rel=\"noopener\">#51\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[624,628,632,636],{"name":16,"url":625,"size":626,"sha256":627,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.1\u002Fultralog-linux.tar.gz",8434149,"34f0d17f93821bd30a452f9acaf32115e8e1fbb85a73289da0daa9ab515815b1",{"name":24,"url":629,"size":630,"sha256":631,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.1\u002Fultralog-macos-arm64.dmg",10600291,"f1248f06b15a068a7f40a341de355fbfcecd0fd6b5c86acbc06cf403381f5c20",{"name":32,"url":633,"size":634,"sha256":635,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.1\u002Fultralog-macos-intel.dmg",10951776,"a7fa6cac703e0a50753a280c2ec950b2fc6214f380d55d238379be32edfdfb9e",{"name":37,"url":637,"size":638,"sha256":639,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.1\u002Fultralog-windows.zip",7813254,"d71ef995dcac99ccce31b2fef29faebc2cc39bf9670494b3b84a065dce6f5b67",{"tag":641,"name":641,"url":642,"publishedAt":643,"prerelease":8,"latest":8,"highlights":644,"notesHtml":648,"assets":649},"v2.3.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.3.0","2026-02-17T20:59:47Z",[645,646,647],"Adds new sourcing method for adapters and protocols (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F47\" rel=\"noopener\">#47\u003C\u002Fa>)","Bump bytes from 1.11.0 to 1.11.1 in the cargo group across 1 directory by @dependabot[bot] in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\u003C\u002Fa>","@dependabot[bot] made their first contribution in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\u003C\u002Fa>","\u003Cul>\n\u003Cli>\u003Cp>Adds new sourcing method for adapters and protocols (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F47\" rel=\"noopener\">#47\u003C\u002Fa>)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>Bump bytes from 1.11.0 to 1.11.1 in the cargo group across 1 directory by @dependabot[bot] in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>@dependabot[bot] made their first contribution in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F48\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n",[650,654,658,662],{"name":16,"url":651,"size":652,"sha256":653,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.0\u002Fultralog-linux.tar.gz",8408333,"49fb06483035275d8fc756af86e849162fbf84491f27f129c30e904b840158c3",{"name":24,"url":655,"size":656,"sha256":657,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.0\u002Fultralog-macos-arm64.dmg",10592359,"2b02a605c23c02a89044828e5793ff1dbeeca76562932252d277851f268a6839",{"name":32,"url":659,"size":660,"sha256":661,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.0\u002Fultralog-macos-intel.dmg",10955407,"0b43bfaada4fbe4b2c1067e3c2c079adbfb8b4cd578992d1ca28596f8f3e7604",{"name":37,"url":663,"size":664,"sha256":665,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.3.0\u002Fultralog-windows.zip",7821084,"33a2178fcf230f8e15fdeb1eff0387c7a7431a65dd1647d2ea3f8fae5e84b98b",{"tag":667,"name":667,"url":668,"publishedAt":669,"prerelease":8,"latest":8,"highlights":670,"notesHtml":672,"assets":673},"v2.2.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.2.0","2026-01-16T14:36:41Z",[671],"Adds Various Histogram Improvements suggested by Users (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F41\" rel=\"noopener\">#41\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Adds Various Histogram Improvements suggested by Users (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F41\" rel=\"noopener\">#41\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[674,678,682,686],{"name":16,"url":675,"size":676,"sha256":677,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0\u002Fultralog-linux.tar.gz",8226684,"39133d4e233c0fb08c417a280fd755e64678cf8223c9ab567ab3857213475c95",{"name":24,"url":679,"size":680,"sha256":681,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0\u002Fultralog-macos-arm64.dmg",10382585,"819f0e8eaf00aeffcc4b60f7a3a3a6f2e3555204715cb0823fb0e44e24847814",{"name":32,"url":683,"size":684,"sha256":685,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0\u002Fultralog-macos-intel.dmg",10774592,"01f1c18b65953ad8ff854b62e29b41d9465b3ede943bc3af796b4b5e7a5b1a44",{"name":37,"url":687,"size":688,"sha256":689,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0\u002Fultralog-windows.zip",7591810,"8d415928ef54cb904cc3780bc3a3dd22ec9e5f75f8fd254662b5142345d3bfa4",{"tag":691,"name":691,"url":692,"publishedAt":693,"prerelease":8,"latest":8,"highlights":694,"notesHtml":696,"assets":697},"v2.1.5","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.1.5","2026-01-16T01:53:51Z",[695],"Adds support for some locomotive logs Issue #44 (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F45\" rel=\"noopener\">#45\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Adds support for some locomotive logs Issue #44 (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F45\" rel=\"noopener\">#45\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[698,702,706,710],{"name":16,"url":699,"size":700,"sha256":701,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.5\u002Fultralog-linux.tar.gz",8184395,"250d72b3efa8eddef73cf1c997f17d8a60072a1ddfa0bd17dc8a89a57deb1a34",{"name":24,"url":703,"size":704,"sha256":705,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.5\u002Fultralog-macos-arm64.dmg",10333617,"8db93ec0d40cc4f20c9572786900e23cfaf2cb14a3328b8c5c614960df6749ea",{"name":32,"url":707,"size":708,"sha256":709,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.5\u002Fultralog-macos-intel.dmg",10733248,"8a6ec6c9601310206c8ff528ed3ce0cb3eac4c3a9e1b92edd46443b0df276642",{"name":37,"url":711,"size":712,"sha256":713,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.5\u002Fultralog-windows.zip",7542677,"40eda4d3c027a84d22cab7271b68b23904f1013a6e5a9dd5ed85fabd498d013f",{"tag":715,"name":716,"url":717,"publishedAt":718,"prerelease":9,"latest":8,"highlights":719,"notesHtml":721,"assets":722},"v2.2.0-beta.2","v2.2.0-beta.2 (Beta)","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.2.0-beta.2","2026-01-16T00:55:06Z",[720],"\u003Cstrong>This is a pre-release version for testing purposes.\u003C\u002Fstrong>","\u003Ch3>Beta Release\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>This is a pre-release version for testing purposes.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This build may contain experimental features, bugs, or incomplete functionality.\nPlease report any issues you encounter on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fissues\" rel=\"noopener\">GitHub Issues\u003C\u002Fa>.\u003C\u002Fp>\n",[723,728,733,738],{"name":724,"url":725,"size":726,"sha256":727,"platform":20,"arch":21,"kind":22},"ultralog-linux-beta.tar.gz","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.2\u002Fultralog-linux-beta.tar.gz",8201374,"fb26f067a8370ada060859b92b77b6b01c1bc2c1ad2129c406c39ab937daba75",{"name":729,"url":730,"size":731,"sha256":732,"platform":28,"arch":29,"kind":30},"ultralog-macos-arm64-beta.dmg","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.2\u002Fultralog-macos-arm64-beta.dmg",10364369,"b1c2145c6c8121984f7ad6335cc41e16fa9d2f3c2f320271c0e2e5397f57c847",{"name":734,"url":735,"size":736,"sha256":737,"platform":28,"arch":21,"kind":30},"ultralog-macos-intel-beta.dmg","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.2\u002Fultralog-macos-intel-beta.dmg",10757472,"f65b686fcffa01ac368ecbd08c5067198d93085b9760886635f4468eb65cbbb4",{"name":739,"url":740,"size":741,"sha256":742,"platform":41,"arch":21,"kind":42},"ultralog-windows-beta.zip","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.2\u002Fultralog-windows-beta.zip",7562733,"462c43501fdabb33fd4a85b519e4df6a9c6a9a7b728b8a464e4899ab3af911cd",{"tag":744,"name":744,"url":745,"publishedAt":746,"prerelease":8,"latest":8,"highlights":747,"notesHtml":749,"assets":750},"v2.1.4","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.1.4","2026-01-14T18:11:32Z",[748],"OpenECU Alliance Integration &amp; Dependency Updates (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F43\" rel=\"noopener\">#43\u003C\u002Fa>)","\u003Cul>\n\u003Cli>OpenECU Alliance Integration &amp; Dependency Updates (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F43\" rel=\"noopener\">#43\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[751,755,759,763],{"name":16,"url":752,"size":753,"sha256":754,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.4\u002Fultralog-linux.tar.gz",8153983,"5e8c43bce856486e598042bb9b047e4b8d9d9ccb76a409ac017fdc018226bfaf",{"name":24,"url":756,"size":757,"sha256":758,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.4\u002Fultralog-macos-arm64.dmg",10316360,"b9c19a7bbce0e4ab03918249279dedfdd067f50aee07db9c96a9a9157583088b",{"name":32,"url":760,"size":761,"sha256":762,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.4\u002Fultralog-macos-intel.dmg",10687439,"8e4bd636fdb0ae9857c977383bf6adf6947c5a276bdadf7425cdda13c56cdd61",{"name":37,"url":764,"size":765,"sha256":766,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.4\u002Fultralog-windows.zip",7518209,"8cb9fdc05e7ffe9b373df95a6e3b7434629d32637b4de95e165c964ad6ed00f9",{"tag":768,"name":769,"url":770,"publishedAt":771,"prerelease":9,"latest":8,"highlights":772,"notesHtml":721,"assets":773},"v2.2.0-beta.1","v2.2.0-beta.1 (Beta)","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.2.0-beta.1","2026-01-04T21:07:03Z",[720],[774,778,782,786],{"name":724,"url":775,"size":776,"sha256":777,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.1\u002Fultralog-linux-beta.tar.gz",8983353,"0546f7990fdd416f1718eac11989a3c935bbb401d4020272dfdb2b66302a85be",{"name":729,"url":779,"size":780,"sha256":781,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.1\u002Fultralog-macos-arm64-beta.dmg",10249300,"ff36d2d21e39c2a98de84f404840077b8fa436ac89251b5b45f71024c250790f",{"name":734,"url":783,"size":784,"sha256":785,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.1\u002Fultralog-macos-intel-beta.dmg",10605055,"5b8245985ef3e2159ec9bf77407916f314d0816cd75cfc39db69b3076ad51312",{"name":739,"url":787,"size":788,"sha256":789,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.2.0-beta.1\u002Fultralog-windows-beta.zip",7426808,"48227b68877b6f0bdcb2551632c67bf99f4fb0bfed41acb34e10a76f58ba1b03",{"tag":791,"name":791,"url":792,"publishedAt":793,"prerelease":8,"latest":8,"highlights":794,"notesHtml":528,"assets":795},"v2.1.3","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.1.3","2026-01-04T01:38:36Z",[],[796,800,804,808],{"name":16,"url":797,"size":798,"sha256":799,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.3\u002Fultralog-linux.tar.gz",8951253,"a8eeabcaf328dd160062ac4e2074019e81e1fb0e9a52aea0c6a71146d763bd5c",{"name":24,"url":801,"size":802,"sha256":803,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.3\u002Fultralog-macos-arm64.dmg",10219360,"a726072702d9f1d986339cae497c859b2177f378e73d84cf625232a734b93b5b",{"name":32,"url":805,"size":806,"sha256":807,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.3\u002Fultralog-macos-intel.dmg",10572042,"8b011b02d7128eab056af9a4e83147fb0c44d1b0f08a1b883e0a78d4ae694086",{"name":37,"url":809,"size":810,"sha256":811,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.3\u002Fultralog-windows.zip",7403756,"de7c847bbe4993b86157d5dd0413050c0a9d553dd44d36ac6f9e6db63644d098",{"tag":813,"name":813,"url":814,"publishedAt":815,"prerelease":8,"latest":8,"highlights":816,"notesHtml":528,"assets":817},"v2.1.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.1.2","2026-01-03T02:25:07Z",[],[818,822,826,830],{"name":16,"url":819,"size":820,"sha256":821,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.2\u002Fultralog-linux.tar.gz",8950894,"636d530972c3e52b2457bd1f935771cdfe7dbfb24506bd66697304a52f0b6e0e",{"name":24,"url":823,"size":824,"sha256":825,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.2\u002Fultralog-macos-arm64.dmg",10216493,"f6325df918316c64f77f32fe9fc5c1b69fb797ecf6751ac3233d1c9d8169ef5c",{"name":32,"url":827,"size":828,"sha256":829,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.2\u002Fultralog-macos-intel.dmg",10572067,"cad2a1d613d563133cf323f4db384aeb3ab507216d849338e1b0489ac2911fb0",{"name":37,"url":831,"size":832,"sha256":833,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.2\u002Fultralog-windows.zip",7403737,"82aaac655fdd325dd0b2ad42d5738a4866065288f82616c73bd277ce8ff80208",{"tag":835,"name":835,"url":836,"publishedAt":837,"prerelease":8,"latest":8,"highlights":838,"notesHtml":841,"assets":842},"v2.1.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.1.1","2026-01-03T02:14:39Z",[839,840],"Adds a number of updates to the GH pages site to improve its look and… (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F38\" rel=\"noopener\">#38\u003C\u002Fa>)","I18n - Full internationalization supporting 15 languages  (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F39\" rel=\"noopener\">#39\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Adds a number of updates to the GH pages site to improve its look and… (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F38\" rel=\"noopener\">#38\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>I18n - Full internationalization supporting 15 languages  (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F39\" rel=\"noopener\">#39\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[843,847,851,855],{"name":16,"url":844,"size":845,"sha256":846,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.1\u002Fultralog-linux.tar.gz",8952869,"27664adeb9aaa8a8e13e23b51a9b2f3237df7b276cff740f60f3a959e3121b12",{"name":24,"url":848,"size":849,"sha256":850,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.1\u002Fultralog-macos-arm64.dmg",10218426,"bd3bda89ca16b2cc9d4d9888f6e5a2371386d94af28770995cc4e86cb99b256e",{"name":32,"url":852,"size":853,"sha256":854,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.1\u002Fultralog-macos-intel.dmg",10571863,"7a9a1817872bad9060c41337000bd85f7f09c49abbc68e0b75c90fa41ddfaf82",{"name":37,"url":856,"size":857,"sha256":858,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.1\u002Fultralog-windows.zip",7403136,"66897c955bcb69626425cdcc5f4570b33d78f4b538aed11c541be6265167368d",{"tag":860,"name":860,"url":861,"publishedAt":862,"prerelease":8,"latest":8,"highlights":863,"notesHtml":864,"assets":865},"v2.1.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.1.0","2026-01-02T03:25:31Z",[839],"\u003Cul>\n\u003Cli>Adds a number of updates to the GH pages site to improve its look and… (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F38\" rel=\"noopener\">#38\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[866,870,874,878],{"name":16,"url":867,"size":868,"sha256":869,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.0\u002Fultralog-linux.tar.gz",8949341,"e888a803781a2fe54f50c942ecc45d0e6cab29e8c4d608402322d1ca1e28cc73",{"name":24,"url":871,"size":872,"sha256":873,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.0\u002Fultralog-macos-arm64.dmg",10214140,"0b5dbebb432d43f6568afea1944ebf32ce159c71ba3f29f38dc7a019b84e5a13",{"name":32,"url":875,"size":876,"sha256":877,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.0\u002Fultralog-macos-intel.dmg",10570873,"77e1ab6c0e25277c90e1eec42839c304187ca812b7cec1a856d69e93ea59ccc9",{"name":37,"url":879,"size":880,"sha256":881,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.1.0\u002Fultralog-windows.zip",7401527,"66155b84a7812ce347a8e2c9affa1e3f7f703bb092cad191b775c20ab3461b9c",{"tag":883,"name":883,"url":884,"publishedAt":885,"prerelease":8,"latest":8,"highlights":886,"notesHtml":893,"assets":894},"v2.0.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.0.0","2026-01-01T18:38:26Z",[887,888,889,890,891,892],"\u003Cstrong>VS Code-style Activity Bar\u003C\u002Fstrong> - New vertical navigation with icon-based panel switching for Files, Channels, Tools, and Settings","\u003Cstrong>Reorganized Panel Layout\u003C\u002Fstrong> - Cleaner, more intuitive organization with dedicated panels for each function","\u003Cstrong>Improved Tool Switcher\u003C\u002Fstrong> - Pill-style tabs for switching between Log Viewer, Scatter Plot, and Histogram views","\u003Cstrong>Consolidated Settings Panel\u003C\u002Fstrong> - All display, unit, normalization, and update settings in one accessible location","\u003Cstrong>New Visualization Tool\u003C\u002Fstrong> - Analyze channel relationships as a 2D heatmap grid","\u003Cstrong>Configurable Grid Sizes\u003C\u002Fstrong> - Choose between 16x16 or 32x32 grid resolution","\u003Ch2>UltraLog v2.0.0 Release Notes\u003C\u002Fh2>\n\u003Ch3>Major Release - Complete UI Overhaul &amp; Professional Analysis Tools\u003C\u002Fh3>\n\u003Cp>This is a major release featuring a completely redesigned user interface, powerful new analysis tools, and significant accessibility improvements.\u003C\u002Fp>\n\u003Chr>\n\u003Ch3>New Features\u003C\u002Fh3>\n\u003Ch4>Complete UI Redesign\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>VS Code-style Activity Bar\u003C\u002Fstrong> - New vertical navigation with icon-based panel switching for Files, Channels, Tools, and Settings\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Reorganized Panel Layout\u003C\u002Fstrong> - Cleaner, more intuitive organization with dedicated panels for each function\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Improved Tool Switcher\u003C\u002Fstrong> - Pill-style tabs for switching between Log Viewer, Scatter Plot, and Histogram views\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Consolidated Settings Panel\u003C\u002Fstrong> - All display, unit, normalization, and update settings in one accessible location\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Histogram \u002F 2D Heatmap View\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>New Visualization Tool\u003C\u002Fstrong> - Analyze channel relationships as a 2D heatmap grid\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Configurable Grid Sizes\u003C\u002Fstrong> - Choose between 16x16 or 32x32 grid resolution\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dual Display Modes\u003C\u002Fstrong> - View average Z-value or hit count per cell\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Interactive Selection\u003C\u002Fstrong> - Click cells to inspect detailed statistics\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cursor Tracking\u003C\u002Fstrong> - Real-time crosshair follows playback position\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WCAG-Compliant Colors\u003C\u002Fstrong> - Dynamic text coloring for AAA accessibility compliance\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Heat Gradient Legend\u003C\u002Fstrong> - Blue-to-red color scale with value range display\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Professional Analysis Framework\u003C\u002Fh4>\n\u003Cp>A comprehensive suite of 14 analysis algorithms organized into four categories:\u003C\u002Fp>\n\u003Ch5>AFR Analysis\u003C\u002Fh5>\n\u003Cul>\n\u003Cli>\u003Cstrong>Fuel Trim Drift Detection (CUSUM)\u003C\u002Fstrong> - Detects systematic drift in AFR using Cumulative Sum algorithm\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rich\u002FLean Zone Detection\u003C\u002Fstrong> - Identifies and highlights rich and lean operating regions\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AFR Deviation Analysis\u003C\u002Fstrong> - Measures deviation from stoichiometric with configurable targets\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch5>Derived Calculations\u003C\u002Fh5>\n\u003Cul>\n\u003Cli>\u003Cstrong>Volumetric Efficiency\u003C\u002Fstrong> - Estimates VE from MAP, RPM, and IAT using speed-density equations\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Injector Duty Cycle\u003C\u002Fstrong> - Calculates IDC from pulse width, RPM, and injector flow rate\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Lambda Calculator\u003C\u002Fstrong> - Converts between AFR and Lambda with fuel type support\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch5>Signal Filters\u003C\u002Fh5>\n\u003Cul>\n\u003Cli>\u003Cstrong>Moving Average\u003C\u002Fstrong> - Simple N-sample averaging for noise reduction\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Exponential Moving Average (EMA)\u003C\u002Fstrong> - Weighted averaging with configurable smoothing factor\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Median Filter\u003C\u002Fstrong> - Robust outlier rejection filter\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Butterworth Lowpass\u003C\u002Fstrong> - Professional-grade IIR filter with configurable cutoff and order (1-8)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Butterworth Highpass\u003C\u002Fstrong> - High-frequency pass filter with SOS implementation\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch5>Statistics\u003C\u002Fh5>\n\u003Cul>\n\u003Cli>\u003Cstrong>Descriptive Statistics\u003C\u002Fstrong> - Mean, median, std dev, min, max, range, and coefficient of variation\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Correlation Analysis\u003C\u002Fstrong> - Pearson correlation coefficient between any two channels\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rate of Change\u003C\u002Fstrong> - First derivative calculation with smoothing options\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch5>Analysis Tool Features\u003C\u002Fh5>\n\u003Cul>\n\u003Cli>\u003Cstrong>Channel Selection Dropdowns\u003C\u002Fstrong> - Tooltips show common ECU channel names for each analyzer type\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Results Display\u003C\u002Fstrong> - Results prominently displayed at top of Analysis Tools panel\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Run &amp; Chart Button\u003C\u002Fstrong> - One-click analysis execution with automatic chart addition\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Min\u002FMax Jump Buttons\u003C\u002Fstrong> - Quick navigation to peak values for computed channels\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Computed Channel Indicator (ƒ)\u003C\u002Fstrong> - Visual distinction between formula-based and raw channels\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Accessibility Improvements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Font Scaling\u003C\u002Fstrong> - Four size options: Small (0.85x), Medium (1.0x), Large (1.15x), and Extra Large (1.3x)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Scalable UI Elements\u003C\u002Fstrong> - All interface elements respect font size preference\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Improved Readability\u003C\u002Fstrong> - Enhanced text contrast and sizing throughout the application\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>New ECU Support\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Emerald ECU Parser\u003C\u002Fstrong> - Full support for Emerald K6\u002FM3D ECU log files\u003Cul>\n\u003Cli>Parses \u003Ccode>.lg1\u003C\u002Fcode> (binary data) and \u003Ccode>.lg2\u003C\u002Fcode> (channel definition) file pairs\u003C\u002Fli>\n\u003Cli>Supports 40+ channel types including TPS, MAP, Lambda, temperatures, pressures, and more\u003C\u002Fli>\n\u003Cli>Automatic OLE timestamp conversion for accurate time synchronization\u003C\u002Fli>\n\u003Cli>Proper scaling and unit conversion for all channel types\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch3>Bug Fixes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Linux Scaling Issues\u003C\u002Fstrong> - Fixed DPI scaling problems on Linux systems (Issue #32)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Windows Build\u003C\u002Fstrong> - Fixed winresource compilation for paths containing spaces\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Visual Polish\u003C\u002Fstrong> - Numerous small visual bug fixes and UI refinements\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Analysis Tool Stability\u003C\u002Fstrong> - Bug fixes for analysis algorithms and test corrections\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch3>Technical Changes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>New Module Structure\u003C\u002Fstrong> - Added \u003Ccode>src\u002Fanalysis\u002F\u003C\u002Fcode> module with sub-modules for each algorithm category\u003C\u002Fli>\n\u003Cli>\u003Cstrong>New UI Components\u003C\u002Fstrong> - Added activity bar, side panel, files panel, channels panel, tools panel, settings panel, and analysis panel\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Extended State Management\u003C\u002Fstrong> - New state types for histogram, font scaling, active panel tracking\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Test Coverage\u003C\u002Fstrong> - Added comprehensive tests for Emerald parser (878 lines of tests)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Code Stats\u003C\u002Fstrong> - 12,605 lines added, 966 lines removed across 55 files\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch3>Supported ECU Systems\u003C\u002Fh3>\n\u003Cp>UltraLog now supports 8 ECU systems:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Haltech (NSP CSV export)\u003C\u002Fli>\n\u003Cli>ECUMaster EMU Pro (CSV export)\u003C\u002Fli>\n\u003Cli>RomRaider (Subaru ECUs)\u003C\u002Fli>\n\u003Cli>Speeduino (MLG binary)\u003C\u002Fli>\n\u003Cli>rusEFI (MLG binary)\u003C\u002Fli>\n\u003Cli>AiM (XRK\u002FDRK binary)\u003C\u002Fli>\n\u003Cli>Link ECU (LLG binary)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>NEW: Emerald K6\u002FM3D (LG1\u002FLG2 binary)\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch3>Contributors\u003C\u002Fh3>\n\u003Cp>Thanks to everyone who contributed to this release!\u003C\u002Fp>\n",[895,899,903,907],{"name":16,"url":896,"size":897,"sha256":898,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0\u002Fultralog-linux.tar.gz",8730073,"fed1b24effdb0dce6855ae5c77115c1bad777911a35230e02ff4fc9d62df526d",{"name":24,"url":900,"size":901,"sha256":902,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0\u002Fultralog-macos-arm64.dmg",10008993,"9c8cedd505935ff9664c3803bd796eeb3d5c2ae39a63b78fca146ea1dd664ff0",{"name":32,"url":904,"size":905,"sha256":906,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0\u002Fultralog-macos-intel.dmg",10328899,"d236902c4e2f5d5198130bcf72e2b8e59b19ca040b19419481d1a2ee71fab851",{"name":37,"url":908,"size":909,"sha256":910,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0\u002Fultralog-windows.zip",7097386,"f0e52074fdabce20c4911b6f0d65c4bd935c432ddc4005fc267f50116d6e602f",{"tag":912,"name":913,"url":914,"publishedAt":915,"prerelease":9,"latest":8,"highlights":916,"notesHtml":721,"assets":917},"v2.0.0-beta.1","v2.0.0-beta.1 (Beta)","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv2.0.0-beta.1","2025-12-31T03:59:12Z",[720],[918,922,926,930],{"name":724,"url":919,"size":920,"sha256":921,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0-beta.1\u002Fultralog-linux-beta.tar.gz",8690951,"0ca1181e75a46acce4008feed1270ba3d7ba54f973bdb11bcadd652921fda7ec",{"name":729,"url":923,"size":924,"sha256":925,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0-beta.1\u002Fultralog-macos-arm64-beta.dmg",9966189,"f075c5b431b7594ffa9f05a940744834771ffde68f1e0843e301fa948ed1b8e4",{"name":734,"url":927,"size":928,"sha256":929,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0-beta.1\u002Fultralog-macos-intel-beta.dmg",10296048,"7f0fde2f8d8770015a68f6d6c117db95722fe88cd84b8c842c47827501286003",{"name":739,"url":931,"size":932,"sha256":933,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv2.0.0-beta.1\u002Fultralog-windows-beta.zip",7061068,"5b1a148b02d0057b1287e3dd9fbccec15430c197051386a2f65990c305c335ba",{"tag":935,"name":935,"url":936,"publishedAt":937,"prerelease":8,"latest":8,"highlights":938,"notesHtml":940,"assets":941},"v1.7.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.7.2","2025-12-30T20:06:17Z",[939],"Adds some static C libraries to fix windows launch bug (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F26\" rel=\"noopener\">#26\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Adds some static C libraries to fix windows launch bug (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Fpull\u002F26\" rel=\"noopener\">#26\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[942,946,950,954],{"name":16,"url":943,"size":944,"sha256":945,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.2\u002Fultralog-linux.tar.gz",8570472,"4e864373d158b1d8d8eb5a43782102f3fbb6afe2ab84712e11320a0b8322105f",{"name":24,"url":947,"size":948,"sha256":949,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.2\u002Fultralog-macos-arm64.dmg",9837448,"4fc14933df56083e801c9b33d821a2ab11802f20688ab15b6fc4288cc3690acf",{"name":32,"url":951,"size":952,"sha256":953,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.2\u002Fultralog-macos-intel.dmg",10173077,"141648cadd2921c2108191967066b1a0c08c8506990fa426be655b6b9795169b",{"name":37,"url":955,"size":956,"sha256":957,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.2\u002Fultralog-windows.zip",6941220,"18845d566d6e29021cec33df0d6a1f8a33598912931ead5e669e2d3d1c1b03f4",{"tag":959,"name":959,"url":960,"publishedAt":961,"prerelease":8,"latest":8,"highlights":962,"notesHtml":964,"assets":965},"v1.7.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.7.1","2025-12-30T00:34:00Z",[963],"Fixes the improper parsing of the romraider files (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F24\" rel=\"noopener\">#24\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Fixes the improper parsing of the romraider files (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F24\" rel=\"noopener\">#24\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[966,970,974,978],{"name":16,"url":967,"size":968,"sha256":969,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.1\u002Fultralog-linux.tar.gz",8570724,"4d8cca07978721af9a64fa7779f4bfa1c57b0c54baecfce67187fbf801d656e1",{"name":24,"url":971,"size":972,"sha256":973,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.1\u002Fultralog-macos-arm64.dmg",9837376,"c10b88b8121627de8503bf4b4c8df0f18f42d7de2db93a7de213b025229fe883",{"name":32,"url":975,"size":976,"sha256":977,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.1\u002Fultralog-macos-intel.dmg",10173388,"6078d30036aa6c4106073959bee8396c1de0ccaa893f6759def71c54af91a9a8",{"name":37,"url":979,"size":980,"sha256":981,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.1\u002Fultralog-windows.zip",6816277,"086c5b3e0a7a6fc9d84f907630d901a3b1782091196e2e96dc72ef0aae3d518f",{"tag":983,"name":983,"url":984,"publishedAt":985,"prerelease":8,"latest":8,"highlights":986,"notesHtml":988,"assets":989},"v1.7.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.7.0","2025-12-29T23:43:30Z",[987],"Adds comprehensive test suite for all current logic (#22) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F23\" rel=\"noopener\">#23\u003C\u002Fa>)","\u003Cul>\n\u003Cli>Adds comprehensive test suite for all current logic (#22) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F23\" rel=\"noopener\">#23\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n",[990,994,998,1002],{"name":16,"url":991,"size":992,"sha256":993,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.0\u002Fultralog-linux.tar.gz",8566532,"e55b43dfe66ff1c9c923ed429e63998f2c0648d9757a7d988298fa924b0e3375",{"name":24,"url":995,"size":996,"sha256":997,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.0\u002Fultralog-macos-arm64.dmg",9825822,"efcb1e3e47c6a907330a64f90e45af5f4dd0ad584002c477990c01e5cadf02c6",{"name":32,"url":999,"size":1000,"sha256":1001,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.0\u002Fultralog-macos-intel.dmg",10176888,"b3120f838db8fd3fbb9c7f042ab47c777e0d82db00e7cf319440ba59dcfea7a0",{"name":37,"url":1003,"size":1004,"sha256":1005,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.7.0\u002Fultralog-windows.zip",6815412,"19af50466495ed6ed98fdd4acdabab7623eb211ca9e4159f6c786a91d2771f8a",{"tag":1007,"name":1007,"url":1008,"publishedAt":1009,"prerelease":8,"latest":8,"highlights":1010,"notesHtml":1013,"assets":1014},"v1.6.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.6.0","2025-12-29T19:00:26Z",[1011,1012],"More new ECU Support - Link and AiM (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F18\" rel=\"noopener\">#18\u003C\u002Fa>)","@SomethingNew71 made their first contribution in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F18\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F18\u003C\u002Fa>","\u003Cul>\n\u003Cli>\u003Cp>More new ECU Support - Link and AiM (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F18\" rel=\"noopener\">#18\u003C\u002Fa>)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>@SomethingNew71 made their first contribution in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F18\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F18\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n",[1015,1019,1023,1027],{"name":16,"url":1016,"size":1017,"sha256":1018,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.6.0\u002Fultralog-linux.tar.gz",8460527,"f3d7191b041328cbf7cc2e1fecb4041a96b1f6add731959b5e778a940c252542",{"name":24,"url":1020,"size":1021,"sha256":1022,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.6.0\u002Fultralog-macos-arm64.dmg",9744564,"7cc4727c485fa8e6a03b0bbb7ac26a76c8c7e8a3bea26d25b2e5783ccebe7926",{"name":32,"url":1024,"size":1025,"sha256":1026,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.6.0\u002Fultralog-macos-intel.dmg",10097449,"d129bbb602fa8a2194dd481b7844d928d5a0a014e877c935b41df95f4807a4b7",{"name":37,"url":1028,"size":1029,"sha256":1030,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.6.0\u002Fultralog-windows.zip",6716265,"0995cfbcf6dd3fa036e1749c69cdfc152a123ffb135f41356d14a0876de37597",{"tag":1032,"name":1032,"url":1033,"publishedAt":1034,"prerelease":8,"latest":8,"highlights":1035,"notesHtml":528,"assets":1036},"v1.5.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.5.0","2025-12-29T02:18:03Z",[],[1037,1041,1045,1049],{"name":16,"url":1038,"size":1039,"sha256":1040,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.5.0\u002Fultralog-linux.tar.gz",8480296,"4623a4f60fd1985d3a641036bb2cbc5c833e2414a9dea41db24fd592b09c9066",{"name":24,"url":1042,"size":1043,"sha256":1044,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.5.0\u002Fultralog-macos-arm64.dmg",9735035,"0a6419c912ef3d4ad3fe07811c04cc0187035826cd2c60ec526510c69ecae7e5",{"name":32,"url":1046,"size":1047,"sha256":1048,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.5.0\u002Fultralog-macos-intel.dmg",10079570,"5c6988c7893a5ff96afe7ddc53811bb99446ce4af16d62429043d0c9e808b794",{"name":37,"url":1050,"size":1051,"sha256":1052,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.5.0\u002Fultralog-windows.zip",6722574,"eb157101e45e0227d09b8604de2729cd891d59e9f6ad196e86155eb24d1117d9",{"tag":1054,"name":1054,"url":1055,"publishedAt":1056,"prerelease":8,"latest":8,"highlights":1057,"notesHtml":528,"assets":1058},"v1.4.3","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.4.3","2025-12-28T23:11:23Z",[],[1059,1063,1067,1071],{"name":16,"url":1060,"size":1061,"sha256":1062,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.3\u002Fultralog-linux.tar.gz",8457188,"4f98fc8cb490de5fc913cf2de20015c5132100794d9fab55de15869f33f11be4",{"name":24,"url":1064,"size":1065,"sha256":1066,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.3\u002Fultralog-macos-arm64.dmg",9725644,"dfcec17d308422ffb72d414a4c2270f2070350f4c76cd937d19e44bfb2ec64f6",{"name":32,"url":1068,"size":1069,"sha256":1070,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.3\u002Fultralog-macos-intel.dmg",10071157,"025b4ed1e6af92593255ecc43b42dc75eb9df99fb7f8c0c18482b70df35065fb",{"name":37,"url":1072,"size":1073,"sha256":1074,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.3\u002Fultralog-windows.zip",6694689,"8daadbe1e35bbb292fefbbec1e6fba729ee9727e693e4d5b9f958089d680411c",{"tag":1076,"name":1076,"url":1077,"publishedAt":1078,"prerelease":8,"latest":8,"highlights":1079,"notesHtml":528,"assets":1080},"v1.4.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.4.2","2025-12-28T21:18:58Z",[],[1081,1085,1089,1093],{"name":16,"url":1082,"size":1083,"sha256":1084,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.2\u002Fultralog-linux.tar.gz",8458390,"cf7d51eb35ea13ff449939b7c769eef09ae674e2c36c5b93569a641fa5417cc4",{"name":24,"url":1086,"size":1087,"sha256":1088,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.2\u002Fultralog-macos-arm64.dmg",9725626,"e0aee4e3cd7d41278ed6478d0f70eac6af17be65a82cabb5a713b96317cedba0",{"name":32,"url":1090,"size":1091,"sha256":1092,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.2\u002Fultralog-macos-intel.dmg",10068552,"70f4e4a0443d8b90820c72d8ca4e9c3b8c5fa9f9fdcbd38a428c7c370fc20b98",{"name":37,"url":1094,"size":1095,"sha256":1096,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.2\u002Fultralog-windows.zip",6691845,"08fe674fa714f0c1594c2a2c41dacea0a1cdd848a926ccef1e586e0cbd398d1f",{"tag":1098,"name":1098,"url":1099,"publishedAt":1100,"prerelease":8,"latest":8,"highlights":1101,"notesHtml":1104,"assets":1105},"v1.4.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.4.1","2025-12-28T20:58:13Z",[1102,1103],"Tests (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F10\" rel=\"noopener\">#10\u003C\u002Fa>)","@Barneyjm made their first contribution in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F10\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F10\u003C\u002Fa>","\u003Cul>\n\u003Cli>\u003Cp>Tests (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F10\" rel=\"noopener\">#10\u003C\u002Fa>)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>@Barneyjm made their first contribution in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F10\" rel=\"noopener\">https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fpull\u002F10\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n",[1106,1110,1114,1118],{"name":16,"url":1107,"size":1108,"sha256":1109,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.1\u002Fultralog-linux.tar.gz",8436433,"67e82ce638cbaa433b9f1afd2a0a0ff3113895a5644af40f355b45698e98e2dc",{"name":24,"url":1111,"size":1112,"sha256":1113,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.1\u002Fultralog-macos-arm64.dmg",9706565,"c6e50156f0b9dc8d23baab9ef3ea10da3ef83f8a7e1fb21aa699691d494750ac",{"name":32,"url":1115,"size":1116,"sha256":1117,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.1\u002Fultralog-macos-intel.dmg",10062834,"5ecd72b9fdbe961294efd555529a6578afc30dba377f502652bc8cd7fd80c5fe",{"name":37,"url":1119,"size":1120,"sha256":1121,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.1\u002Fultralog-windows.zip",6679133,"60d340dc483737f2ba2098d7e6dcb0d866ca722d095e828e6f165b87fa7efdff",{"tag":1123,"name":1123,"url":1124,"publishedAt":1125,"prerelease":8,"latest":8,"highlights":1126,"notesHtml":528,"assets":1127},"v1.4.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.4.0","2025-12-28T18:33:51Z",[],[1128,1132,1136,1140],{"name":16,"url":1129,"size":1130,"sha256":1131,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.0\u002Fultralog-linux.tar.gz",8424572,"c1349428a828dde80812234ed7f3946c64e1aceeb514c77ebb1f3f062e4ded80",{"name":24,"url":1133,"size":1134,"sha256":1135,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.0\u002Fultralog-macos-arm64.dmg",9699721,"cf6ac92f8593ff1f534c7dc54f5e25531bc3570d6a0c14ef5fc997420db58cfd",{"name":32,"url":1137,"size":1138,"sha256":1139,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.0\u002Fultralog-macos-intel.dmg",10038396,"9065fac4f08038793e81c519f7df7160ed98b0db7e2466f3dcc76a42ae34b740",{"name":37,"url":1141,"size":1142,"sha256":1143,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.4.0\u002Fultralog-windows.zip",6664648,"73e6cdbd13214b88909ffbda508e50bf5f0374fd8703ed69ebbdbfba0da36f58",{"tag":1145,"name":1145,"url":1146,"publishedAt":1147,"prerelease":8,"latest":8,"highlights":1148,"notesHtml":528,"assets":1149},"v1.3.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.3.0","2025-12-28T03:30:33Z",[],[1150,1154,1158,1162],{"name":16,"url":1151,"size":1152,"sha256":1153,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fultralog-linux.tar.gz",8371087,"f30ef6a771271ee2a962bdecf284bdaaa959adc44b586137b1d3a6d475ca43f3",{"name":24,"url":1155,"size":1156,"sha256":1157,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fultralog-macos-arm64.dmg",9699827,"0bc04991dae6967c54a9991096929d472db3ff3d03991d198ad15e6249624494",{"name":32,"url":1159,"size":1160,"sha256":1161,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fultralog-macos-intel.dmg",10042706,"5ec68697de82a1a1bb402ed8dc69d7b297680409512ef6af82f1f5a299804674",{"name":37,"url":1163,"size":1164,"sha256":1165,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fultralog-windows.zip",6497135,"3499d432d34f01fc09458a98d4b882c82ed44a821446c570029cbab64aefe88c",{"tag":1167,"name":1168,"url":1169,"publishedAt":1170,"prerelease":9,"latest":8,"highlights":1171,"notesHtml":1172,"assets":1173},"v1.3.0-beta.1","v1.3.0-beta.1 (Beta)","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.3.0-beta.1","2025-12-28T03:08:33Z",[720],"\u003Ch3>Beta Release\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>This is a pre-release version for testing purposes.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This build may contain experimental features, bugs, or incomplete functionality.\nPlease report any issues you encounter on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSomethingNew71\u002FUltraLog\u002Fissues\" rel=\"noopener\">GitHub Issues\u003C\u002Fa>.\u003C\u002Fp>\n",[1174,1177,1181,1185],{"name":724,"url":1175,"size":1152,"sha256":1176,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0-beta.1\u002Fultralog-linux-beta.tar.gz","e211eb775dea63e95a0de2c1b61c8ee8eb89d38192c0c121c866d132fdd1a85c",{"name":729,"url":1178,"size":1179,"sha256":1180,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0-beta.1\u002Fultralog-macos-arm64-beta.dmg",9699860,"429cfac0000c9aab9cc7faac3b87f1f297f03284850eea6b1f82842187e018f5",{"name":734,"url":1182,"size":1183,"sha256":1184,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0-beta.1\u002Fultralog-macos-intel-beta.dmg",10042719,"9967d0c3e986ae38ba16be0c8ed9e82d4ebf59d13246c4f1c0f6f2dbba57ab8c",{"name":739,"url":1186,"size":1187,"sha256":1188,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.3.0-beta.1\u002Fultralog-windows-beta.zip",6497126,"0ceea0eb6caf5b59faec6bbeae66ba8ec397b2805df0e5282c970a7ab6be7e45",{"tag":1190,"name":1190,"url":1191,"publishedAt":1192,"prerelease":8,"latest":8,"highlights":1193,"notesHtml":528,"assets":1194},"v1.2.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.2.2","2025-12-25T16:59:53Z",[],[1195,1199,1203,1207],{"name":16,"url":1196,"size":1197,"sha256":1198,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.2\u002Fultralog-linux.tar.gz",8369779,"ed7f21227a7e9b2e52c1aeb1089ee4a9ec33b4a8ea0f5f513cd29ea34c1c073a",{"name":24,"url":1200,"size":1201,"sha256":1202,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.2\u002Fultralog-macos-arm64.dmg",9697880,"a4f002080f35b2922ed653d6464ac850c10338a452ed6ff49ae541120c3614e0",{"name":32,"url":1204,"size":1205,"sha256":1206,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.2\u002Fultralog-macos-intel.dmg",10036648,"6c10347581ff032f7a2c4d6f7496676f2e3786bcad790728361313d845ed0918",{"name":37,"url":1208,"size":1209,"sha256":1210,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.2\u002Fultralog-windows.zip",6489452,"fedf11083c644cf0abb1d4b0424ecdf1226cc28108843a616d50bf7c802c4931",{"tag":1212,"name":1212,"url":1213,"publishedAt":1214,"prerelease":8,"latest":8,"highlights":1215,"notesHtml":528,"assets":1216},"v1.2.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.2.1","2025-12-25T16:15:43Z",[],[1217,1221,1225,1229],{"name":16,"url":1218,"size":1219,"sha256":1220,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.1\u002Fultralog-linux.tar.gz",8369116,"1f26722e8e6575bc1d84b289cc2213fcb66558f2bc3d76d41c9653b556e78885",{"name":24,"url":1222,"size":1223,"sha256":1224,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.1\u002Fultralog-macos-arm64.dmg",9698254,"c88f5b9de8f6b30c48dc64492c2c818acdac32d8b6a464b42c4930290a143bf5",{"name":32,"url":1226,"size":1227,"sha256":1228,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.1\u002Fultralog-macos-intel.dmg",10042910,"8bbef64f47f215b83550702254056b577f57830370b129683d7465d11db25584",{"name":37,"url":1230,"size":1231,"sha256":1232,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.2.1\u002Fultralog-windows.zip",6490314,"a39c0deef49b5d435d448f1194fd20aa916de72c8861498f052eaeaafaafc1ce",{"tag":1234,"name":1234,"url":1235,"publishedAt":1236,"prerelease":8,"latest":8,"highlights":1237,"notesHtml":528,"assets":1238},"v1.1.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.1.2","2025-12-24T02:59:10Z",[],[1239,1243,1247,1251],{"name":16,"url":1240,"size":1241,"sha256":1242,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.2\u002Fultralog-linux.tar.gz",8159134,"243083b83fde1366597c6b4710927f9a6faa979c60404e52fcc56703368909b8",{"name":24,"url":1244,"size":1245,"sha256":1246,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.2\u002Fultralog-macos-arm64.dmg",9384287,"1583706d5e13ed399e4b0716def70261d74deb1902d48aa176759bf7de128689",{"name":32,"url":1248,"size":1249,"sha256":1250,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.2\u002Fultralog-macos-intel.dmg",9696878,"74cdaef410d4e16ccf713c114ddfafdec23668c8ab3bc41e098d04dbfe54e483",{"name":37,"url":1252,"size":1253,"sha256":1254,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.2\u002Fultralog-windows.zip",6220771,"a63cd15a5a380ce33abcbfe8d140c2d84df35ff36047f8ad3506d3cce192c244",{"tag":1256,"name":1256,"url":1257,"publishedAt":1258,"prerelease":8,"latest":8,"highlights":1259,"notesHtml":528,"assets":1260},"v1.1.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.1.1","2025-12-24T02:52:51Z",[],[1261,1265,1269,1273],{"name":16,"url":1262,"size":1263,"sha256":1264,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.1\u002Fultralog-linux.tar.gz",8159115,"86618925aac9276408c15860d22179ec96dab9b64eedc162fda0c3c13a1f6b29",{"name":24,"url":1266,"size":1267,"sha256":1268,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.1\u002Fultralog-macos-arm64.dmg",9384278,"1f98d68880135d6c5963fed01c499ce43c9e933eb3e56b7c0d3abe0c289c1820",{"name":32,"url":1270,"size":1271,"sha256":1272,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.1\u002Fultralog-macos-intel.dmg",9696881,"29d9b1f645d0ab1a058336985c0c4cd9941bc2f9cdb3e79b0195faceaba0f1da",{"name":37,"url":1274,"size":1275,"sha256":1276,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.1\u002Fultralog-windows.zip",6220754,"4c5e8484a8129ebafb7c0791b3ff27589fd2364d8cf71e403f711e6b51ac1e27",{"tag":1278,"name":1278,"url":1279,"publishedAt":1280,"prerelease":8,"latest":8,"highlights":1281,"notesHtml":528,"assets":1282},"v1.1.0","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.1.0","2025-12-24T02:49:28Z",[],[1283,1286,1290,1294],{"name":16,"url":1284,"size":1263,"sha256":1285,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fultralog-linux.tar.gz","67068606762c0881d30940197f1814c43a72d2c721138b5a9ddcf7ae4fc0ef1b",{"name":24,"url":1287,"size":1288,"sha256":1289,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fultralog-macos-arm64.dmg",9384288,"286d0436d4c0e3a0e8f6a211188598fa10d526b6c9f23fc0ad3615ceb5ed3bf3",{"name":32,"url":1291,"size":1292,"sha256":1293,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fultralog-macos-intel.dmg",9696883,"4d9e900490984cbe812cd4d1c45c334aa267f76cdf9756e43b0425353ae6ee20",{"name":37,"url":1295,"size":1275,"sha256":1296,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fultralog-windows.zip","6de89d8c3e81df96764fd05d16133583ed2d9b95ccb106855b3bdfcfe9f678c3",{"tag":1298,"name":1298,"url":1299,"publishedAt":1300,"prerelease":8,"latest":8,"highlights":1301,"notesHtml":528,"assets":1302},"v1.0.3","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.0.3","2025-12-24T02:18:58Z",[],[1303,1307,1311,1315],{"name":16,"url":1304,"size":1305,"sha256":1306,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.3\u002Fultralog-linux.tar.gz",7153651,"afe25367cc9fc42cec209cf33d754b1f7411e078008f60590060f91e8fd8f4a7",{"name":24,"url":1308,"size":1309,"sha256":1310,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.3\u002Fultralog-macos-arm64.dmg",8479857,"c85d46eaf6645b3364c2eb6e145f19d784f1458a69c804d73b205bf0b218c654",{"name":32,"url":1312,"size":1313,"sha256":1314,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.3\u002Fultralog-macos-intel.dmg",8709557,"640a343aad14b99ccde5f60d89e83b0b35e1c33475bb7ea91c9b3593a3556cce",{"name":37,"url":1316,"size":1317,"sha256":1318,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.3\u002Fultralog-windows.zip",5213595,"4734ab7b1f1c7f9a87112b4bdcb363854e5db699061a8a60aabb3a4385a81f23",{"tag":1320,"name":1320,"url":1321,"publishedAt":1322,"prerelease":8,"latest":8,"highlights":1323,"notesHtml":528,"assets":1324},"v1.0.2","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.0.2","2025-12-23T21:46:22Z",[],[1325,1329,1333,1337],{"name":16,"url":1326,"size":1327,"sha256":1328,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.2\u002Fultralog-linux.tar.gz",7107705,"216dfb7b5ab7a0ce941c176fa6ddcbcb2c242f6863c4614a10683dcf9e828b7f",{"name":24,"url":1330,"size":1331,"sha256":1332,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.2\u002Fultralog-macos-arm64.dmg",8450952,"e7ecd9a0bd5dab90fbe8594071bb142777f05ea7e09bf7d34d440b2f783821b4",{"name":32,"url":1334,"size":1335,"sha256":1336,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.2\u002Fultralog-macos-intel.dmg",8678506,"7b281354f02922a9f7499f9cd8296c6e359167549538511b64ce70faa05dd0ad",{"name":37,"url":1338,"size":1339,"sha256":1340,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.2\u002Fultralog-windows.zip",5181769,"d74e3b98b631ba378460ea3cd0ebfdaa74de921aef4acbc78d90a6614a43c944",{"tag":1342,"name":1342,"url":1343,"publishedAt":1344,"prerelease":8,"latest":8,"highlights":1345,"notesHtml":528,"assets":1346},"v1.0.1","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Ftag\u002Fv1.0.1","2025-12-23T21:32:37Z",[],[1347,1350,1354,1360,1364,1369],{"name":16,"url":1348,"size":1327,"sha256":1349,"platform":20,"arch":21,"kind":22},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fultralog-linux.tar.gz","6968776e3d48cc1cad20b56abf8242342de175df511a2ebb22561aaf9bbd87a9",{"name":24,"url":1351,"size":1352,"sha256":1353,"platform":28,"arch":29,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fultralog-macos-arm64.dmg",6628041,"e77779bdd806b62de5b2c6c13782afa5ca0091ffdb248da64dc15c0cb378b229",{"name":1355,"url":1356,"size":1357,"sha256":1358,"platform":1359,"arch":1359,"kind":22},"ultralog-macos-arm64.tar.gz","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fultralog-macos-arm64.tar.gz",6598025,"a68bc9226760f4802acccfed1a1ed6bef08543389399e8e8a27874c28aae2ed1",null,{"name":32,"url":1361,"size":1362,"sha256":1363,"platform":28,"arch":21,"kind":30},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fultralog-macos-intel.dmg",6844108,"a28dc07041a03b8ebb1f6422a5a96aaa52ecb486525d0ca05a693df511ce0941",{"name":1365,"url":1366,"size":1367,"sha256":1368,"platform":1359,"arch":1359,"kind":22},"ultralog-macos-intel.tar.gz","https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fultralog-macos-intel.tar.gz",6837013,"5a2b47b32a01155395809591082a428c62c9ab15458427aeccb4d941931b491a",{"name":37,"url":1370,"size":1339,"sha256":1371,"platform":41,"arch":21,"kind":42},"https:\u002F\u002Fgithub.com\u002FClassicMiniDIY\u002FUltraLog\u002Freleases\u002Fdownload\u002Fv1.0.1\u002Fultralog-windows.zip","edacb39185404379b647b8932d6dabb861b18b12d07ac1d831b1d3cb76ab840a",1792894560076]