What's new
What changed in Zero Logs Analyzer: pages you can open, numbers you read on them, files you can download, and the controls you use to publish or withhold your own data. Newest first.
Work that changes nothing you can see — parser internals, tests, infrastructure — is recorded in the engineering changelog in the source repository instead. Nothing appears on this page unless it was written for riders deliberately.
You are on version 3.11.1, marked below.
3.11.1
17 August 2026Currently runningThe version number in the footer now names the release you are actually on.
Fixed— Was wrong, now is not
- The footer could show the previous release rather than the running one, which also made this page mark the wrong entry as current. Everything else in this release is deployment machinery with nothing to see.
3.11.0
17 August 2026This page.
Added— New in this release
- A page listing what changed in each release, reached by clicking the version number in the footer. Each release links to itself, so a particular change can be pointed at directly.
- Every release now says which version you are looking at and marks the one currently running, so it is clear whether a fix described here has reached you yet.
3.10.1
17 August 2026Phones get one navigation bar that works, and console captures get their clock right.
Fixed— Was wrong, now is not
- On a phone, two navigation bars sat on top of each other and the one that won carried fewer links. Timeline, Trips, Charging Costs, the log viewer, My Batteries, Log Files, Bookmarks, Shared Links, Feedback and Profile had no route at all from a phone; there is one bar now, with a drawer behind its last cell holding the rest.
- A fault message printed inside a badge pushed a shared trip page to 669 px wide on a 390 px screen, with the card's border ending mid-sentence. Short codes still get a badge; a sentence is now laid out as a sentence.
- Timestamps read from a console capture were stored seven hours early, because the motorcycle's console prints its own clock rather than UTC. Captures are now corrected — including short ones that carry only the capture tool's own header line — so charges and rides taken from a console dump line up with the ones from a binary log.
3.9.0
16 August 2026One rule for how big your battery is, and no impossible efficiency figures.
Fixed— Was wrong, now is not
- The pack size behind the dashboard battery gauge is measured by the same rule as the battery page, including the check that discards a charge claiming twenty points of state of charge across a one-point window. The same pack, on the same day, had been reading 3.83, 4.00 and 4.20 kWh on three pages of the app.
- An impossible efficiency is no longer published. 24 km on a three-point drop in state of charge works out at 235 km/kWh, and it was on a public page; the ceiling is now 80 km/kWh — twice the fleet's 95th percentile — which withholds 253 rides out of 9,272 rather than printing a figure nobody measured.
3.7.0
16 August 2026Trip and ride energy stop being measured against the badge on the battery.
Fixed— Was wrong, now is not
- A trip counted the same battery twice. A pack does not refill during a coffee stop but its state-of-charge reading recovers once the load comes off, so a nine-leg trip added up 68 points of drop on a pack that lost 45.
- Ride energy is measured from your pack's own charges rather than from the number on its badge. A 2016 FXS with 118 recorded charges measures 3.37 kWh against a 6.5 kWh badge, so every ride on it read about 1.7 times too high; 34 of the 66 bikes with enough charge history were over by more than 10%.
- A pack is never reported as holding more than it could when new. Four bikes had been raised past their own badge by charge energy metered at the wall, with the charger's losses counted as if they had reached the cells.
3.6.0
16 August 2026Added— New in this release
- The verdict on a published trip link can be refreshed after you write a note, without minting a new link. The address you already sent to a forum keeps working, and nothing is spent until you ask.
Fixed— Was wrong, now is not
- Clearing a note removed it from your account and left it on the public page, so a rider who changed their mind was told it was done when it was not.
- After rewriting a note, the page went on offering to refresh the verdict on every load, for ever. The offer now appears only when the verdict really is older than the note, and a refresh counts against the same monthly AI allowance as every other AI feature.
3.3.0
16 August 2026Write down what the log cannot record.
Added— New in this release
- Your own note on a ride, for the part a log cannot hold — the dash flashing, the throttle going dead after a long descent, that it happened four times. A note always reaches the AI verdict, and reaches the public page only if you tick the box.
- A photograph of the motorcycle and the outline of a route can appear on your public rider page. What is published is a separate stripped copy with no camera data and no location in it, and unticking the box deletes that copy rather than merely hiding it.
Fixed— Was wrong, now is not
- Two shared links to trips ridden out of the same town could not be told apart — both read "Formia, Italy" with the date in small grey type. A shared link now carries its place and its day together, which is what names a trip.
- The route outline drew a straight line across the area the privacy trim had just hidden. It breaks the line there now, the way the map beside it always has.
- Shared ride photo links no longer carry an internal account identifier.
3.0.0
16 August 2026A public rider page, off until you turn it on twice.
Added— New in this release
- A public rider page at a handle you choose. Two separate switches, both off until you set them: one says you have a page at all, one says a particular ride appears on it, and turning the page off clears every ride from it.
- A page carries at most three rides, and one generated sentence says how many were chosen, how many are anonymised and whether the motorcycle is named — so three rides do not read as a rider who has ridden three times.
- The year on your page is the year you started riding, declared by you. It used to be the year you signed up here, which told an owner who bought their bike used in 2019 that they had been riding since 2026.
Changed— Different from before
- A published link can be made to show less while keeping its address. Tightening a link you have already sent out no longer means revoking it and losing every reader you sent it to.
Fixed— Was wrong, now is not
- The page says why a ride cannot be listed before you tick the box, instead of failing afterwards with a message that slides away.
- Using a Gravatar on your page is a choice you make, and the page states its cost where the choice is made: the address in a Gravatar URL identifies you on every site that uses them.
2.99.0
15 August 2026Added— New in this release
- A page listing every link you have published, ranked by how much each one gives away rather than by date. The owner of this app had four live links and remembered one; among the forgotten was a bike recap serving a full VIN, the odometer and six years of ride history to anyone with the address.
Fixed— Was wrong, now is not
- A 40 km ride showed as 7 km. The log held the whole climb — odometer 33,664 to 33,704, state of charge 96 to 53 — and the report had finished with no error and no warning; across the whole 861-file test corpus this recovers 9,592 km and 886 rides.
2.98.0
15 August 2026Fixed— Was wrong, now is not
- Charging sessions of impossible length are no longer created. One session in the database ran 305 days as a single charge, with 196 more over eight hours and 43 that began and ended at the same instant.
- State of health now divides by one usable-capacity figure instead of two that disagreed by 2.3%, which is why a pack in ordinary condition could publish 102%. Every pack Zero has sold has a usable figure between 87.5% and 89.3% of the number on its badge.
2.97.1
15 August 2026Added— New in this release
- Battery telemetry from the console captures of 2020-era battery boards: cell voltages, pack voltage, temperatures and current, 4,686 samples over two months on the reference capture. Those captures carry no state of charge at all — the reading is stuck at 100 in every record — so none is shown.
Fixed— Was wrong, now is not
- The Battery State of Health card came back for six bikes that had lost it. Two of its three rungs are specifications, true whether or not anything has been measured, so the explanation should not disappear along with the figure.
- The overall battery score no longer jumps at a round number. It cost 14 points at 70.0% state of health and 25 at 69.9% — eleven points, on a figure that moves when your next charge arrives.
2.97.0
14 August 2026Fixed— Was wrong, now is not
- A 2020 battery console capture holding two months of history was refused with "no log entry table found", and its owner was told to run the dump again. It reads now: 21,148 entries.
- The battery capacity quoted by the chat assistant follows the same rule as the battery page. It had been averaging the twenty most recent charges regardless of which pack they came from, and comparing the result against the badge.
2.95.0
14 August 2026The battery page counts its evidence before it scores anything.
Added— New in this release
- A battery health guide in the Learn section: what makes a charge count, why a charge from 60% to full is worth twice an 80% top-up, and why rides draw on the chart without voting on the number.
Changed— Different from before
- Four charges are needed before a state-of-health percentage is published. Below that the tile shows how much evidence exists — "2 of 4", with a filling bar and never a percent sign, because the one thing it must not resemble is a very low state of health.
- The battery page labels its three capacity figures Badge, When new and Today, and state of health divides by what the pack gave when new rather than by the badge. That step from badge to usable was true the day the motorcycle was sold, and charging an owner for it is what makes an ordinary ten-year-old pack look ruined.
Fixed— Was wrong, now is not
- 32 bikes published a state of health of exactly 102.3%, a figure that contained no measurement at all — most modern Zeros carry no electrical telemetry to measure with. Published figures go from 118 to 56 and readings above 100% from 86 to 3.
- A motorcycle whose pack cannot be measured no longer scores 100 "Excellent" on the strength of never having been checked.
- The overall health verdict listed the same three bullet points every time, so the two deductions that dominate — a live critical fault and worn capacity — were never among them. Measured on one bike: a score of 57 above three visible bullets worth nine points between them.
- The cell-spread warning judges the sustained spread instead of the worst instant. Cells separate under hard acceleration; 53 of 124 bikes were flagged, 2 are.
2.83.0
12 August 2026Battery pages stop contradicting each other.
Added— New in this release
- Recurring battery faults are listed on the battery page. All twelve of the bikes with the most log files carry at least one recurring fault family and the page had shown none of them, ranked so that 996 failures which stopped in 2020 describe a motorcycle that was repaired.
- Each capacity reading carries the temperature it was taken at, with the weather drawn under the capacity curve on a shared time axis. Measured over 1,986 charges across 46 bikes, a pack below freezing hands over about 83% of what it gives at 22 °C.
Changed— Different from before
- The AI fleet verdict expires when new logs arrive instead of standing for ever. It is not regenerated automatically, because that would spend your metered allowance on an opinion you did not ask for.
Fixed— Was wrong, now is not
- All-time battery records could be set by a corrupt reading, so a few bikes showed an impossible cell voltage as their headline figure — one read 16,546 mV for a single cell, and 21 of 123 bikes with cell data were affected. The low end mattered more, because it drives a warning: two bikes reported minima of 384 mV and 45 mV against true minima of 3,573 and 2,801.
- A pack is no longer reported as holding more than its badge. "7.22 kWh maximum" on a 6.5 kWh pack was being admitted deliberately, by a band that ran to 15% above the nameplate.
- A replaced battery was averaged with the one you ride. 56 charges on the outgoing modules at 2.90 kWh and 34 on the incoming pack at 4.00 came out as roughly 3.0 and a headline of 52%, describing a battery that has never existed.
- The health ring read 97 "Excellent" a few centimetres above this same page's own verdict of 70%, because it scored how the pack behaves and never asked how much of it was left. "Health vs Age: 104%" had the same shape: a ten-month-old pack graded against the age of the motorcycle.
- Tyre pressure and riding mode were saved and never sent back to the page, so every reload showed empty boxes and the values looked lost.
2.82.0
12 August 2026A range calculator anyone can use.
Added— New in this release
- A public range calculator: pick a model year, a speed, a load and a gradient. It never asks you for a drag coefficient — nobody knows theirs, so it is solved from Zero's own published highway range — and the whole configuration lives in the address, so a setup can be handed to someone else.
Fixed— Was wrong, now is not
- The range calculator was absent from the menu below 1280 px and had no entry at all on a phone, which is most of the people who would use it.
- Total ascent was over-counted on a route: a 9.77 km loop that ended where it started reported 84 m of climbing against a true 68.
2.73.0
6 August 2026Phone navigation for the public pages, four new Learn guides, and battery identity read out of the logs.
Added— New in this release
- The public pages have navigation on a phone. Below 768 px there was none at all: the model catalogue, the log decoder and every Learn topic were unreachable from any page, and the de facto menu was a row of 20 px footer links.
- Four new Learn guides written from Zero's own manuals: fastener torques (503 figures from 31 manuals, including the nine specifications Zero changed between model years), the 12 V system (343 fuse rows), thermal limits, and drive-belt tension.
- Compare two model years side by side. The catalogue could compare every model and no two motorcycles, so a 2016 against a 2022 was unreachable; the comparison also states what a battery failure costs, from dealer part numbers.
- Weather for a ride whose location you told us, hourly and back to 2017. Only for a location you asserted yourself, because guessing it turns "it has been dry all week, so this is not water" into a confident wrong answer.
- Efficiency is compared against your own history as well as against the fleet. One rider's 365 rides have a median of 15.4 km/kWh against the FXS fleet's 20.5, so every trip they published read "below average" and said the same thing for ever.
Changed— Different from before
- A declared change of owner reaches the dashboard, the costs page, the AI verdict and your shared links, rather than one aggregate. History views still show everything, with a marker on the day the boundary falls, because truncating a rider's journeys at the day they bought the bike would destroy what a second-hand owner said was valuable.
Fixed— Was wrong, now is not
- A quarter of every console capture never reached the database — 5,292 rows stored out of 7,011, with nothing anywhere saying so. Separately, a capture whose terminal had wrapped every line was refused outright; one such 1.2 MB file now yields 7,015 entries over 19 days.
- Selecting a battery module did nothing: either module returned identical charts, which is worse than an absent feature because it looked like it worked. Selecting a retired pack also put the current pack's cells under the old pack's name.
- The report page showed a green "No errors or warnings" card for a motorcycle with 97 error rows, and the rows behind a ride's error count can now be opened and read.
2.59.0
3 August 2026Added— New in this release
- Photographs on a shared trip, uploaded from the trip page. The file is decoded and re-encoded before storage so no location, device or timestamp survives, and a photograph whose position falls inside the hidden part of the route is published without a pin rather than not at all.
- Photographs with no position ask you where along the route they belong, and your placement always beats the camera's.
- The data-quality panel the owner sees is on the public page too, with GPX download and Google Maps and Waze links beside it.
2.50.0
3 August 2026Added— New in this release
- Every parse now checks the raw file independently and reports when it demonstrably holds records later than anything that was read. This is the failure that keeps recurring, because nothing about it looks like an error.
Fixed— Was wrong, now is not
- A rider's most recent day of riding was missing from reports that completed without a single error. Across the test corpus this recovers 3,088 entries and 44 days on 90 files, 25 of which now reach a later date and one of which gains three months.
- Because there were no rides for that day, every phone recording uploaded afterwards was refused with "no matching ride" — a symptom of a problem two layers away from where it appeared.
2.44.0
2 August 2026The public trip page.
Added— New in this release
- A shared ride opens as a navigable layered map with its sensor charts and whichever sections the owner turned on.
- Four switches on each link: the bike's telemetry, a fault summary, the raw log lines, and the model and year. Every one is off by default, and links already handed out were not widened by the change.
- Raw log lines are published with the identifiers taken out of them — VINs, serial numbers, firmware strings, hardware addresses and coordinates written into free text. Fault codes, temperatures, voltages, currents and state of charge are kept, because a redaction that eats the fault codes removes the reason to publish a log at all.
- The page says two things out loud: that a shortened route is deliberate, and that identifiers were removed from the log lines. Otherwise both read as a broken upload.
2.43.0
2 August 2026Trips.
Added— New in this release
- Rides grouped into the journeys you remember taking. A ride ends when the bike is switched off, which is right for engineering and wrong for "show me last Sunday": stop for coffee and one outing becomes three rows.
- A trip page with a layered map, the route colourable by any channel, and one shared cursor across the map and every chart. Legs with no recording are named and counted rather than drawn across.
- GPX export with one track segment per leg, so no viewer draws a straight line across the hour you spent at lunch.
- Route privacy for public links, chosen per share from a default you set once. The trim is applied when the page is built, so your stored track is never modified.
2.42.0
2 August 2026Record a ride with your phone.
Added— New in this release
- Phone recordings are read properly, gyroscope included: yaw rate, roll rate and corner radius, from the one sensor that measures cornering directly rather than inferring it from where the bike ended up.
- Nothing from the motion sensors is published below 15 km/h. A phone cannot tell riding from carrying — ungated, a 2 km walk reported a 13° lean and a 40°/s yaw rate.
- A recording works out which ride it belongs to, and one that spans several rides is split between them. Coverage and gaps travel with every match, so a recording that died ten minutes into an hour says so instead of presenting a sixth of the ride as the ride.
- A phone telemetry guide in the Learn section, written from measurements rather than from the apps' own documentation: Sensor Logger asks Android for 100 Hz and delivers 62 Hz over 90 seconds but 15 Hz over 21 minutes.
2.41.0
1 August 2026The parser had been stopping partway through a log and saying nothing.
Added— New in this release
- Export All now exports: one ZIP for a whole upload session, with selectable parts — summary statistics, decoded log text, telemetry as CSV, rides and charges, and the original files as uploaded.
- The upload assistant names the one case that is ours rather than the motorcycle's: a thin report because we did not finish reading the file, carrying the opposite advice — re-parse what you already uploaded instead of downloading it again.
Fixed— Was wrong, now is not
- A log that appeared to cover nine days actually held ten months. One bike's file reported 42 rides over 301 km and holds 114 rides, 573 km, 12 charges and an odometer reaching 33,249 km; the report ended in a smooth ladder of identical status rows and read as uneventful.
- A single torn record no longer defines a report. Five bad rows out of 6,609 had given one motorcycle a state-of-charge range of 24% to 253%, a 1,784,914 V pack and a 2,157,131 kW discharge.
- Fake pack-voltage samples are gone. One record type never carried a voltage at all and had contributed 77,999 readings — 27% of every battery voltage figure in the database; with it removed, the two independent decoders agree on the same pack to within 0.2 V.
Older releases are not listed: this record starts at 2.41.0, the first release written up for riders. What came before it is in the engineering changelog only.